From 9801379bf017de4831ccc0539359cd7b74bd71d5 Mon Sep 17 00:00:00 2001 From: Brad Davidson Date: Tue, 21 Jul 2020 01:41:46 -0700 Subject: [PATCH] Update wrangler to latest This allows us to update helm-controller and dynamiclistener. The dynamiclistener update should resolve #1621. Signed-off-by: Brad Davidson --- go.mod | 15 +- go.sum | 113 ++-- pkg/cloudprovider/cloudprovider.go | 4 +- pkg/cluster/https.go | 4 +- pkg/daemons/config/types.go | 2 +- pkg/daemons/control/server.go | 2 +- pkg/etcd/controller.go | 2 +- .../clientset/versioned/clientset.go | 97 --- pkg/generated/clientset/versioned/doc.go | 20 - .../versioned/fake/clientset_generated.go | 82 --- pkg/generated/clientset/versioned/fake/doc.go | 20 - .../clientset/versioned/fake/register.go | 56 -- .../clientset/versioned/scheme/doc.go | 20 - .../clientset/versioned/scheme/register.go | 56 -- .../versioned/typed/k3s.cattle.io/v1/addon.go | 195 ------ .../versioned/typed/k3s.cattle.io/v1/doc.go | 20 - .../typed/k3s.cattle.io/v1/fake/doc.go | 20 - .../typed/k3s.cattle.io/v1/fake/fake_addon.go | 142 ----- .../v1/fake/fake_k3s.cattle.io_client.go | 40 -- .../k3s.cattle.io/v1/generated_expansion.go | 21 - .../k3s.cattle.io/v1/k3s.cattle.io_client.go | 89 --- .../controllers/k3s.cattle.io/factory.go | 79 +-- .../controllers/k3s.cattle.io/interface.go | 17 +- .../controllers/k3s.cattle.io/v1/addon.go | 91 +-- .../controllers/k3s.cattle.io/v1/interface.go | 23 +- .../informers/externalversions/factory.go | 180 ------ .../informers/externalversions/generic.go | 62 -- .../internalinterfaces/factory_interfaces.go | 40 -- .../k3s.cattle.io/interface.go | 46 -- .../k3s.cattle.io/v1/addon.go | 90 --- .../k3s.cattle.io/v1/interface.go | 45 -- .../listers/k3s.cattle.io/v1/addon.go | 94 --- .../k3s.cattle.io/v1/expansion_generated.go | 27 - pkg/node/controller.go | 2 +- pkg/rootlessports/controller.go | 2 +- pkg/rootlessports/controller_windows.go | 2 +- pkg/server/context.go | 8 +- pkg/server/server.go | 2 +- pkg/servicelb/controller.go | 4 +- vendor/github.com/coreos/pkg/capnslog/init.go | 2 +- .../github.com/go-openapi/spec/.golangci.yml | 5 + vendor/github.com/go-openapi/spec/bindata.go | 36 +- vendor/github.com/go-openapi/spec/expander.go | 7 +- vendor/github.com/go-openapi/spec/go.mod | 7 +- vendor/github.com/go-openapi/spec/go.sum | 29 +- vendor/github.com/go-openapi/spec/ref.go | 2 + .../go-openapi/spec/schema_loader.go | 7 +- .../go-openapi/strfmt/.golangci.yml | 6 + vendor/github.com/go-openapi/strfmt/README.md | 13 + vendor/github.com/go-openapi/strfmt/date.go | 29 + vendor/github.com/go-openapi/strfmt/go.mod | 2 + vendor/github.com/go-openapi/strfmt/time.go | 90 ++- .../go-openapi/validate/.travis.yml | 6 +- vendor/github.com/go-openapi/validate/spec.go | 10 +- .../github.com/go-openapi/validate/values.go | 26 + vendor/github.com/imdario/mergo/README.md | 18 +- vendor/github.com/imdario/mergo/map.go | 1 - vendor/github.com/imdario/mergo/merge.go | 19 +- .../rancher/dynamiclistener/factory/ca.go | 24 +- .../rancher/dynamiclistener/factory/gen.go | 57 +- .../github.com/rancher/dynamiclistener/go.mod | 10 +- .../github.com/rancher/dynamiclistener/go.sum | 573 ++++++++++++++++-- .../rancher/dynamiclistener/listener.go | 219 ++++++- .../rancher/dynamiclistener/redirect.go | 4 +- .../dynamiclistener/storage/file/file.go | 1 - .../dynamiclistener/storage/kubernetes/ca.go | 59 ++ .../storage/kubernetes/controller.go | 32 +- .../clientset/versioned/clientset.go | 97 --- .../pkg/generated/clientset/versioned/doc.go | 20 - .../clientset/versioned/scheme/doc.go | 20 - .../clientset/versioned/scheme/register.go | 56 -- .../versioned/typed/helm.cattle.io/v1/doc.go | 20 - .../helm.cattle.io/v1/generated_expansion.go | 21 - .../v1/helm.cattle.io_client.go | 89 --- .../typed/helm.cattle.io/v1/helmchart.go | 195 ------ .../controllers/helm.cattle.io/factory.go | 79 +-- .../controllers/helm.cattle.io/interface.go | 17 +- .../helm.cattle.io/v1/helmchart.go | 91 +-- .../helm.cattle.io/v1/interface.go | 23 +- .../informers/externalversions/factory.go | 180 ------ .../informers/externalversions/generic.go | 62 -- .../helm.cattle.io/interface.go | 46 -- .../helm.cattle.io/v1/helmchart.go | 90 --- .../helm.cattle.io/v1/interface.go | 45 -- .../internalinterfaces/factory_interfaces.go | 40 -- .../helm.cattle.io/v1/expansion_generated.go | 27 - .../listers/helm.cattle.io/v1/helmchart.go | 94 --- .../helm-controller/pkg/helm/controller.go | 6 +- .../rancher/{wrangler-api => lasso}/LICENSE | 1 + .../rancher/lasso/pkg/cache/cache.go | 113 ++++ .../lasso/pkg/cache/sharedinformerfactory.go | 208 +++++++ .../rancher/lasso/pkg/client/client.go | 280 +++++++++ .../lasso/pkg/client/sharedclientfactory.go | 183 ++++++ .../lasso/pkg/controller/controller.go | 288 +++++++++ .../lasso/pkg/controller/errorcontroller.go | 35 ++ .../lasso/pkg/controller/sharedcontroller.go | 122 ++++ .../pkg/controller/sharedcontrollerfactory.go | 205 +++++++ .../lasso/pkg/controller/sharedhandler.go | 122 ++++ .../pkg/controller}/transaction.go | 14 +- .../github.com/rancher/lasso/pkg/log/log.go | 13 + .../rancher/lasso/pkg/mapper/mapper.go | 90 +++ .../rancher/lasso/pkg/scheme/all.go | 5 + .../pkg/generated/controllers/apps/factory.go | 126 ---- .../generated/controllers/batch/factory.go | 126 ---- .../pkg/generated/controllers/core/factory.go | 126 ---- .../controllers/core/v1/interface.go | 85 --- .../pkg/generated/controllers/rbac/factory.go | 126 ---- .../wrangler/pkg/apply/desiredset_apply.go | 12 +- .../wrangler/pkg/controller-gen/args/args.go | 26 +- .../pkg/controller-gen/args/groupversion.go | 84 ++- .../generators/client_generator.go | 19 +- .../controller-gen/generators/factory_go.go | 98 +-- .../generators/group_interface_go.go | 27 +- .../generators/group_version_interface_go.go | 32 +- .../controller-gen/generators/list_type_go.go | 6 +- .../generators/register_group_version_go.go | 8 +- .../pkg/controller-gen/generators/type_go.go | 120 ++-- .../pkg/controller-gen/generators/util.go | 46 +- .../wrangler/pkg/controller-gen/main.go | 111 +++- .../rancher/wrangler/pkg/crd/init.go | 17 + .../wrangler/pkg/data/convert/convert.go | 41 ++ .../pkg/generated/controllers/apps/factory.go | 59 ++ .../generated/controllers/apps/interface.go | 19 +- .../controllers/apps/v1/daemonset.go | 91 +-- .../controllers/apps/v1/deployment.go | 91 +-- .../controllers/apps/v1/interface.go | 27 +- .../controllers/apps/v1/statefulset.go | 91 +-- .../generated/controllers/batch/factory.go | 59 ++ .../generated/controllers/batch/interface.go | 19 +- .../controllers/batch/v1/interface.go | 23 +- .../pkg/generated/controllers/batch/v1/job.go | 91 +-- .../pkg/generated/controllers/core/factory.go | 59 ++ .../generated/controllers/core/interface.go | 19 +- .../controllers/core/v1/configmap.go | 89 +-- .../controllers/core/v1/endpoints.go | 89 +-- .../generated/controllers/core/v1/event.go | 89 +-- .../controllers/core/v1/interface.go | 84 +++ .../controllers/core/v1/namespace.go | 91 +-- .../pkg/generated/controllers/core/v1/node.go | 91 +-- .../core/v1/persistentvolumeclaim.go | 91 +-- .../pkg/generated/controllers/core/v1/pod.go | 91 +-- .../generated/controllers/core/v1/secret.go | 89 +-- .../generated/controllers/core/v1/service.go | 91 +-- .../controllers/core/v1/serviceaccount.go | 89 +-- .../pkg/generated/controllers/rbac/factory.go | 59 ++ .../generated/controllers/rbac/interface.go | 19 +- .../controllers/rbac/v1/clusterrole.go | 89 +-- .../controllers/rbac/v1/clusterrolebinding.go | 89 +-- .../controllers/rbac/v1/interface.go | 29 +- .../pkg/generated/controllers/rbac/v1/role.go | 89 +-- .../controllers/rbac/v1/rolebinding.go | 89 +-- .../wrangler/pkg/generic/controller.go | 201 +----- .../wrangler/pkg/generic/controllerfactory.go | 195 ------ .../rancher/wrangler/pkg/generic/factory.go | 120 ++++ .../rancher/wrangler/pkg/generic/handlers.go | 96 --- .../wrangler/pkg/relatedresource/changeset.go | 40 +- .../wrangler/pkg/schemas/openapi/generate.go | 6 +- .../rancher/wrangler/pkg/schemes/all.go | 15 +- vendor/github.com/spf13/cobra/.gitignore | 5 +- vendor/github.com/spf13/cobra/.travis.yml | 28 +- vendor/github.com/spf13/cobra/Makefile | 36 ++ vendor/github.com/spf13/cobra/README.md | 107 ++-- vendor/github.com/spf13/cobra/args.go | 10 +- .../spf13/cobra/bash_completions.go | 104 +++- .../spf13/cobra/bash_completions.md | 239 ++++++-- vendor/github.com/spf13/cobra/cobra.go | 4 +- vendor/github.com/spf13/cobra/command.go | 52 +- .../spf13/cobra/custom_completions.go | 384 ++++++++++++ .../spf13/cobra/fish_completions.go | 172 ++++++ .../spf13/cobra/fish_completions.md | 7 + vendor/github.com/spf13/cobra/go.mod | 5 +- vendor/github.com/spf13/cobra/go.sum | 120 +++- .../wsproxy/websocket_proxy.go | 39 +- vendor/go.uber.org/atomic/.travis.yml | 16 +- vendor/go.uber.org/atomic/Makefile | 33 +- vendor/go.uber.org/atomic/README.md | 6 +- vendor/go.uber.org/atomic/error.go | 55 ++ vendor/golang.org/x/net/html/const.go | 1 - vendor/golang.org/x/net/html/node.go | 5 + vendor/golang.org/x/net/html/parse.go | 239 ++++---- vendor/golang.org/x/net/html/render.go | 34 +- vendor/golang.org/x/net/html/token.go | 3 +- vendor/golang.org/x/net/http2/http2.go | 6 - vendor/golang.org/x/net/http2/server.go | 11 +- vendor/golang.org/x/net/http2/transport.go | 5 +- vendor/golang.org/x/net/ipv4/helper.go | 17 +- vendor/golang.org/x/net/ipv4/sys_asmreq.go | 3 + vendor/golang.org/x/net/ipv6/helper.go | 1 - vendor/modules.txt | 58 +- 189 files changed, 6416 insertions(+), 5518 deletions(-) delete mode 100644 pkg/generated/clientset/versioned/clientset.go delete mode 100644 pkg/generated/clientset/versioned/doc.go delete mode 100644 pkg/generated/clientset/versioned/fake/clientset_generated.go delete mode 100644 pkg/generated/clientset/versioned/fake/doc.go delete mode 100644 pkg/generated/clientset/versioned/fake/register.go delete mode 100644 pkg/generated/clientset/versioned/scheme/doc.go delete mode 100644 pkg/generated/clientset/versioned/scheme/register.go delete mode 100644 pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/addon.go delete mode 100644 pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/doc.go delete mode 100644 pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/fake/doc.go delete mode 100644 pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/fake/fake_addon.go delete mode 100644 pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/fake/fake_k3s.cattle.io_client.go delete mode 100644 pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/generated_expansion.go delete mode 100644 pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/k3s.cattle.io_client.go delete mode 100644 pkg/generated/informers/externalversions/factory.go delete mode 100644 pkg/generated/informers/externalversions/generic.go delete mode 100644 pkg/generated/informers/externalversions/internalinterfaces/factory_interfaces.go delete mode 100644 pkg/generated/informers/externalversions/k3s.cattle.io/interface.go delete mode 100644 pkg/generated/informers/externalversions/k3s.cattle.io/v1/addon.go delete mode 100644 pkg/generated/informers/externalversions/k3s.cattle.io/v1/interface.go delete mode 100644 pkg/generated/listers/k3s.cattle.io/v1/addon.go delete mode 100644 pkg/generated/listers/k3s.cattle.io/v1/expansion_generated.go create mode 100644 vendor/github.com/rancher/dynamiclistener/storage/kubernetes/ca.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/clientset.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/doc.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/scheme/doc.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/scheme/register.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/doc.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/generated_expansion.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/helm.cattle.io_client.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/helmchart.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/factory.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/generic.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/interface.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/v1/helmchart.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/v1/interface.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/internalinterfaces/factory_interfaces.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/listers/helm.cattle.io/v1/expansion_generated.go delete mode 100644 vendor/github.com/rancher/helm-controller/pkg/generated/listers/helm.cattle.io/v1/helmchart.go rename vendor/github.com/rancher/{wrangler-api => lasso}/LICENSE (99%) create mode 100644 vendor/github.com/rancher/lasso/pkg/cache/cache.go create mode 100644 vendor/github.com/rancher/lasso/pkg/cache/sharedinformerfactory.go create mode 100644 vendor/github.com/rancher/lasso/pkg/client/client.go create mode 100644 vendor/github.com/rancher/lasso/pkg/client/sharedclientfactory.go create mode 100644 vendor/github.com/rancher/lasso/pkg/controller/controller.go create mode 100644 vendor/github.com/rancher/lasso/pkg/controller/errorcontroller.go create mode 100644 vendor/github.com/rancher/lasso/pkg/controller/sharedcontroller.go create mode 100644 vendor/github.com/rancher/lasso/pkg/controller/sharedcontrollerfactory.go create mode 100644 vendor/github.com/rancher/lasso/pkg/controller/sharedhandler.go rename vendor/github.com/rancher/{wrangler/pkg/generic => lasso/pkg/controller}/transaction.go (83%) create mode 100644 vendor/github.com/rancher/lasso/pkg/log/log.go create mode 100644 vendor/github.com/rancher/lasso/pkg/mapper/mapper.go create mode 100644 vendor/github.com/rancher/lasso/pkg/scheme/all.go delete mode 100644 vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/factory.go delete mode 100644 vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/batch/factory.go delete mode 100644 vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/factory.go delete mode 100644 vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/interface.go delete mode 100644 vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/factory.go create mode 100644 vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/factory.go rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/apps/interface.go (56%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/apps/v1/daemonset.go (78%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/apps/v1/deployment.go (78%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/apps/v1/interface.go (52%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/apps/v1/statefulset.go (78%) create mode 100644 vendor/github.com/rancher/wrangler/pkg/generated/controllers/batch/factory.go rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/batch/interface.go (55%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/batch/v1/interface.go (55%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/batch/v1/job.go (77%) create mode 100644 vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/factory.go rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/core/interface.go (56%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/core/v1/configmap.go (70%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/core/v1/endpoints.go (70%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/core/v1/event.go (70%) create mode 100644 vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/interface.go rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/core/v1/namespace.go (78%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/core/v1/node.go (78%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/core/v1/persistentvolumeclaim.go (80%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/core/v1/pod.go (77%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/core/v1/secret.go (70%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/core/v1/service.go (78%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/core/v1/serviceaccount.go (71%) create mode 100644 vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/factory.go rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/rbac/interface.go (56%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/rbac/v1/clusterrole.go (70%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/rbac/v1/clusterrolebinding.go (73%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/rbac/v1/interface.go (51%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/rbac/v1/role.go (70%) rename vendor/github.com/rancher/{wrangler-api => wrangler}/pkg/generated/controllers/rbac/v1/rolebinding.go (71%) delete mode 100644 vendor/github.com/rancher/wrangler/pkg/generic/controllerfactory.go create mode 100644 vendor/github.com/rancher/wrangler/pkg/generic/factory.go delete mode 100644 vendor/github.com/rancher/wrangler/pkg/generic/handlers.go create mode 100644 vendor/github.com/spf13/cobra/Makefile create mode 100644 vendor/github.com/spf13/cobra/custom_completions.go create mode 100644 vendor/github.com/spf13/cobra/fish_completions.go create mode 100644 vendor/github.com/spf13/cobra/fish_completions.md create mode 100644 vendor/go.uber.org/atomic/error.go diff --git a/go.mod b/go.mod index 57a656ef9c95..3a9f2484632a 100644 --- a/go.mod +++ b/go.mod @@ -34,6 +34,8 @@ replace ( github.com/prometheus/client_model => github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 github.com/prometheus/common => github.com/prometheus/common v0.0.0-20181126121408-4724e9255275 github.com/prometheus/procfs => github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a + github.com/rancher/dynamiclistener => github.com/brandond/dynamiclistener v0.3.1-0.20200722174601-8e612bed7a58 + github.com/rancher/helm-controller => github.com/brandond/helm-controller v0.6.4-0.20200722213229-29019174fe5e k8s.io/api => github.com/rancher/kubernetes/staging/src/k8s.io/api v1.18.6-k3s1 k8s.io/apiextensions-apiserver => github.com/rancher/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.18.6-k3s1 k8s.io/apimachinery => github.com/rancher/kubernetes/staging/src/k8s.io/apimachinery v1.18.6-k3s1 @@ -83,10 +85,13 @@ require ( github.com/go-bindata/go-bindata v3.1.2+incompatible github.com/go-sql-driver/mysql v1.4.1 github.com/gogo/googleapis v1.3.0 // indirect + github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 // indirect + github.com/google/go-cmp v0.3.1 // indirect github.com/google/tcpproxy v0.0.0-20180808230851-dfa16c61dad2 github.com/google/uuid v1.1.1 github.com/gorilla/mux v1.7.3 github.com/gorilla/websocket v1.4.1 + github.com/hashicorp/golang-lru v0.5.3 // indirect github.com/kubernetes-sigs/cri-tools v0.0.0-00010101000000-000000000000 github.com/lib/pq v1.1.1 github.com/mattn/go-sqlite3 v1.13.0 @@ -94,13 +99,13 @@ require ( github.com/opencontainers/runc v1.0.0-rc10 github.com/opencontainers/selinux v1.3.1-0.20190929122143-5215b1806f52 github.com/pkg/errors v0.9.1 - github.com/rancher/dynamiclistener v0.2.0 + github.com/rancher/dynamiclistener v0.2.1-0.20200714201033-9c1939da3af9 github.com/rancher/helm-controller v0.6.3 github.com/rancher/kine v0.4.0 + github.com/rancher/lasso v0.0.0-20200515155337-a34e1e26ad91 github.com/rancher/remotedialer v0.2.0 github.com/rancher/spur v0.0.0-20200617165101-8702c8e4ce7a - github.com/rancher/wrangler v0.6.1 - github.com/rancher/wrangler-api v0.6.0 + github.com/rancher/wrangler v0.6.2-0.20200721203632-787d93e49342 github.com/rootless-containers/rootlesskit v0.7.2 github.com/sirupsen/logrus v1.4.2 github.com/spf13/pflag v1.0.5 @@ -109,8 +114,10 @@ require ( // 54ba958 is v3.4.9 go.etcd.io/etcd v0.5.0-alpha.5.0.20200520232829-54ba9589114f golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975 - golang.org/x/net v0.0.0-20191204025024-5ee1b9f4859a + golang.org/x/net v0.0.0-20200226121028-0de0cce0169b golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e + golang.org/x/tools v0.0.0-20191017205301-920acffc3e65 // indirect + google.golang.org/appengine v1.6.1 // indirect google.golang.org/grpc v1.26.0 gopkg.in/yaml.v2 v2.3.0 k8s.io/api v0.18.5 diff --git a/go.sum b/go.sum index 7646d3fb144b..785d16b2cfe0 100644 --- a/go.sum +++ b/go.sum @@ -3,6 +3,7 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0 h1:ROfEUZz+Gh5pa62DJWXSaonyu3StP6EA6lPEXPI6mCo= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +github.com/360EntSecGroup-Skylar/excelize v1.4.1/go.mod h1:vnax29X2usfl7HHkBrX5EvSCJcmH3dT9luvxzu8iGAE= github.com/Azure/azure-sdk-for-go v35.0.0+incompatible h1:PkmdmQUmeSdQQ5258f4SyCf2Zcz0w67qztEg37cOR7U= github.com/Azure/azure-sdk-for-go v35.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= @@ -46,6 +47,7 @@ github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEV github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OpenPeeDeeP/depguard v1.0.0/go.mod h1:7/4sitnI9YlQgTLLk734QlzXT8DuHVnAyztLplQjk+o= github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM= +github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= @@ -60,6 +62,7 @@ github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4Rq github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= @@ -85,6 +88,10 @@ github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17 github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/brandond/dynamiclistener v0.3.1-0.20200722174601-8e612bed7a58 h1:q2Gz5XDhoZFTPBfgoXZCKqBi/jBPnZrh0yr+Q7hNV44= +github.com/brandond/dynamiclistener v0.3.1-0.20200722174601-8e612bed7a58/go.mod h1:dAaj1yxNDQ+rzzcg+VOXg3YfNC8SxtwYY+AM0proxek= +github.com/brandond/helm-controller v0.6.4-0.20200722213229-29019174fe5e h1:oPToMvMpBewyaJ3LdwwOJalXPHd2RC6TI+f0wzKtRBw= +github.com/brandond/helm-controller v0.6.4-0.20200722213229-29019174fe5e/go.mod h1:ENjA6lehzrmu1AZCm0SsnndyX6PKZGGhtaAebnkIcX8= github.com/bronze1man/goStrongswanVici v0.0.0-20171013065002-4d72634a2f11/go.mod h1:c+n7HXa5FxzR8GDsmu773UtbtrmKvMVerLVQeEbnzAE= github.com/bronze1man/goStrongswanVici v0.0.0-20190828090544-27d02f80ba40 h1:udTfdeYqe866Z5mxTaEm5irSJK2vupyxwBOHAYEVtJo= github.com/bronze1man/goStrongswanVici v0.0.0-20190828090544-27d02f80ba40/go.mod h1:fWUtBEPt2yjrr3WFhOqvajM8JSEU8bEeBcoeSCsKRpc= @@ -100,6 +107,9 @@ github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1 github.com/checkpoint-restore/go-criu v0.0.0-20181120144056-17b0214f6c48 h1:AQMF0Xixllgf29MKlx/TGEhRk7bEDX5kxz8Ui8lOvEs= github.com/checkpoint-restore/go-criu v0.0.0-20181120144056-17b0214f6c48/go.mod h1:TrMrLQfeENAPYPRsJuq3jsqdlRh3lvi6trTZJG8+tho= github.com/cheekybits/genny v0.0.0-20170328200008-9127e812e1e9/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cilium/ebpf v0.0.0-20191025125908-95b36a581eed h1:/UgmF+cZTm9kp4uJ122y/9cVhczNJCgAgAeH2FfzPeg= github.com/cilium/ebpf v0.0.0-20191025125908-95b36a581eed/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= @@ -132,6 +142,7 @@ github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ github.com/containernetworking/plugins v0.8.2 h1:5lnwfsAYO+V7yXhysJKy3E1A2Gy9oVut031zfdOzI9w= github.com/containernetworking/plugins v0.8.2/go.mod h1:TxALKWZpWL79BC3GOYKJzzXr7U8R23PdhwaLp6F3adc= github.com/coredns/corefile-migration v1.0.6/go.mod h1:OFwBp/Wc9dJt5cAZzHWMNhK1r5L0p0jDwIBc6j8NC8E= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.1.11+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= @@ -148,6 +159,8 @@ github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7 github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea h1:n2Ltr3SrfQlf/9nOna1DoGKxLx3qTSI8Ttl6Xrqp6mw= github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -160,7 +173,6 @@ github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1S github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -190,6 +202,7 @@ github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3 github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustmop/soup v1.1.2-0.20190516214245-38228baa104e/go.mod h1:CgNC6SGbT+Xb8wGGvzilttZL1mc5sQ/5KkcxsZttMIk= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= 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= @@ -224,9 +237,11 @@ github.com/go-bindata/go-bindata v3.1.1+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy github.com/go-bindata/go-bindata v3.1.2+incompatible h1:5vjJMVhowQdPzjE1LdxyFF7YFTXg5IgGVW4gBr5IbvE= github.com/go-bindata/go-bindata v3.1.2+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo= github.com/go-critic/go-critic v0.3.5-0.20190526074819-1df300866540/go.mod h1:+sE8vrLDS2M0pZkBk0wy6+nLdKexVDrl/jBqQOTDThA= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-ini/ini v1.28.1/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-lintpack/lintpack v0.5.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= @@ -266,11 +281,15 @@ github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsd github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= github.com/go-openapi/spec v0.19.3 h1:0XRyw8kguri6Yw4SxhsQA/atC88yqrk0+G4YhI2wabc= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/spec v0.19.5 h1:Xm0Ao53uqnk9QE/LlYV5DEU09UAgpliA85QoT9LzqPw= +github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= github.com/go-openapi/strfmt v0.19.3 h1:eRfyY5SkaNJCAwmmMcADjY31ow9+N7MCLW7oRkbsINA= github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= +github.com/go-openapi/strfmt v0.19.5 h1:0utjKrw+BAh8s57XE9Xz8DUBsVvPmRUB6styvl9wWIM= +github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= @@ -281,6 +300,8 @@ github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+ github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= github.com/go-openapi/validate v0.19.5 h1:QhCBKRYqZR+SKo4gl1lPhPahope8/RLt6EVgY8X80w0= github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= +github.com/go-openapi/validate v0.19.8 h1:YFzsdWIDfVuLvIOF+ZmKjVg1MbPJ1QgY9PihMwei1ys= +github.com/go-openapi/validate v0.19.8/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= github.com/go-ozzo/ozzo-validation v3.5.0+incompatible/go.mod h1:gsEKFIVnabGBt6mXmxK0MoFy+cZoTJY6mu5Ll3LVLBU= github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= @@ -317,6 +338,7 @@ github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGw github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -326,6 +348,7 @@ github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.0.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= @@ -362,10 +385,8 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-containerregistry v0.0.0-20190617215043-876b8855d23c/go.mod h1:yZAFP63pRshzrEYLXLGPmUt0Ay+2zdjmMN1loCnRLUk= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -378,10 +399,8 @@ github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gnostic v0.0.0-20170426233943-68f4ded48ba9/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.3.1 h1:WeAefnSUHlBb0iJKwxFDZdbfGwkd7xRNuV+IpXMJhYk= github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/gophercloud/gophercloud v0.1.0 h1:P/nh25+rzXouhytV2pUHBb65fnds26Ghl8/391+sT5o= @@ -399,10 +418,12 @@ github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.m github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= 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/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4 h1:z53tR0945TRRQO/fLEVPI6SMv7ZflF0TEaTAoU7tOzg= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5 h1:UImYN5qQ8tuGpGE16ZmjvcTtTw24zw1QAp/SlnNrZhI= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -420,15 +441,14 @@ github.com/heketi/tests v0.0.0-20151005000721-f3775cbcefd6/go.mod h1:xGMAM8JLi7U github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.7 h1:Y+UAYTZ7gDEuOfhxKWy+dvb5dRQ6rJjFSdX2HZY1/gI= -github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28= +github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/insomniacslk/dhcp v0.0.0-20190712084813-dc1a53400564/go.mod h1:CfMdguCK66I5DAUJgGKyNz8aB6vO5dZzkm9Xep6WGvw= github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= github.com/jamescun/tuntap v0.0.0-20190712092105-cb1fb277045c/go.mod h1:zzwpsgcYhzzIP5WyF8g9ivCv38cY9uAV9Gu0m3lThhE= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= -github.com/jetstack/cert-manager v0.7.2/go.mod h1:nbddmhjWxYGt04bxvwVGUSeLhZ2PCyNvd7MpXdq+yWY= github.com/jimstudt/http-authentication v0.0.0-20140401203705-3eca13d6893a/go.mod h1:wK6yTYYcgjHE1Z1QtXACPDjcFJyBskHEdagmnq3vsP8= github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= @@ -436,7 +456,6 @@ github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht github.com/joho/godotenv v0.0.0-20161216230537-726cc8b906e3/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46Ok= @@ -457,9 +476,6 @@ github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/knative/build v0.6.0/go.mod h1:/sU74ZQkwlYA5FwYDJhYTy61i/Kn+5eWfln2jDbw3Qo= -github.com/knative/pkg v0.0.0-20190514205332-5e4512dcb2ca/go.mod h1:7Ijfhw7rfB+H9VtosIsDYvZQ+qYTz7auK3fHW/5z4ww= -github.com/knative/serving v0.6.1/go.mod h1:ljvMfwQy2qanaM/8xnBSK4Mz3Vv2NawC2fo5kFRJS1A= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -495,7 +511,6 @@ github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/marten-seemann/qtls v0.2.3/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk= -github.com/mattbaird/jsonpatch v0.0.0-20171005235357-81af80346b1a/go.mod h1:M1qoD/MqPgTZIk0EWKB38wE28ACRfVcn+cU08jyArI0= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= @@ -532,11 +547,11 @@ github.com/moby/vpnkit v0.3.1-0.20190720080441-7dd3dcce7d3d/go.mod h1:KyjUrL9cb6 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mozilla/tls-observatory v0.0.0-20180409132520-8791a200eb40/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mrunalp/fileutils v0.0.0-20171103030105-7d4729fb3618 h1:7InQ7/zrOh6SlFjaXFubv0xX0HsuC9qJsdqm7bNQpYM= @@ -558,6 +573,7 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLA github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.4.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -565,12 +581,15 @@ github.com/onsi/ginkgo v1.11.0 h1:JAKSXpt1YjtLA7YpPiqO9ss6sNXEsPfSGdwN0UHqzrw= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.3.0/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1 h1:K0jcRCwNQM3vFGh1ppMtDh/+7ApJrjldlX8fA0jDTLQ= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.8.1 h1:C5Dqfs/LeauYDX0jJXIe2SWmwCbGzx9yF8C8xy3Lh34= +github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -584,6 +603,7 @@ github.com/opencontainers/runtime-spec v0.0.0-20180911193056-5684b8af48c1/go.mod github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= github.com/opencontainers/selinux v1.3.1-0.20190929122143-5215b1806f52 h1:B8hYj3NxHmjsC3T+tnlZ1UhInqUgnyF1zlGPmzNg2Qk= github.com/opencontainers/selinux v1.3.1-0.20190929122143-5215b1806f52/go.mod h1:+BLncwf63G4dgOzykXAxcmnFlUaOlkDdmw/CqsW6pjs= +github.com/paulmach/orb v0.1.3/go.mod h1:VFlX/8C+IQ1p6FTRRKzKoOPJnvEtA5G0Veuqwbu//Vk= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.1.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= @@ -593,7 +613,6 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021 h1:0XM1XL/OFFJjXsYXlG30spTkV/E9+gmd5GD1w2HE8xM= @@ -608,6 +627,7 @@ github.com/prometheus/common v0.0.0-20181126121408-4724e9255275 h1:PnBWHBf+6L0jO github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a h1:9a8MnZMP0X2nLJdBg+pBmGgkJlSaKC2KaQmTCk1XDtE= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/qri-io/starlib v0.4.2-0.20200213133954-ff2e8cd5ef8d/go.mod h1:7DPO4domFU579Ga6E61sB9VFNaniPVwJP5C4bBCu3wA= github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI= github.com/quobyte/api v0.1.2/go.mod h1:jL7lIHrmqQ7yh05OJ+eEEdHr0u/kmT1Ff9iHd+4H6VI= github.com/rakelkar/gonetsh v0.0.0-20190930180311-e5c5ffe4bdf0 h1:iXE9kmlAqhusXxzkXictdNgWS7p4ZBnmv9SdyMgTf6E= @@ -618,16 +638,12 @@ github.com/rancher/cri v1.3.0-k3s.6 h1:jeom53pNYUJHlZBHpax8vpQeBoW19vSVGAQn9jPyI github.com/rancher/cri v1.3.0-k3s.6/go.mod h1:Ht5T1dIKzm+4NExmb7wDVG6qR+j0xeXIjjhCv1d9geY= github.com/rancher/cri-tools v1.18.0-k3s1 h1:pLYthxpSu6k3Up9tNAMA0MK2ERqB6FC1sZQPRSW1qSg= github.com/rancher/cri-tools v1.18.0-k3s1/go.mod h1:Ij/GWNRcEDP6zVN6eQpvN/s0nhuJVtPQFy7RAdl+Wu8= -github.com/rancher/dynamiclistener v0.2.0 h1:KucYwJXVVGhZ/NndfMCeQoCafT/VN7kvqSGgmlX8Lxk= -github.com/rancher/dynamiclistener v0.2.0/go.mod h1:fs/dxyNcB3YT6W9fVz4bDGfhmSQS17QQup6BIcGF++s= github.com/rancher/flannel v0.12.0-k3s1 h1:P23dWSk/9mGT1x2rDWW9JXNrF/0kjftiHwMau/+ZLGM= github.com/rancher/flannel v0.12.0-k3s1/go.mod h1:zQ/9Uhaw0yV4Wh6ljVwHVT1x5KuhenZA+6L8lRzOJEY= github.com/rancher/go-powershell v0.0.0-20200701182037-6845e6fcfa79 h1:UeC0rjrIel8hHz92cdVN09Cm4Hz+BhsPP/ZvQnPOr58= github.com/rancher/go-powershell v0.0.0-20200701182037-6845e6fcfa79/go.mod h1:xi4WpK6Op4m1Lknq61/e+VSjYlTs9bulVOaDNyBdzvk= github.com/rancher/go-powershell v0.0.0-20200701184732-233247d45373 h1:BePi97poJ4hXnkP9yX96EmNQgMg+dGScvB1sqIheJ7w= github.com/rancher/go-powershell v0.0.0-20200701184732-233247d45373/go.mod h1:Vz8oLnHgttpo/aZrTpjbcpZEDzzElqNau2zmorToY0E= -github.com/rancher/helm-controller v0.6.3 h1:tsqSXndQ7Ms8S0mBd2zWOcTV1tiZ4BUYkemYnijNXio= -github.com/rancher/helm-controller v0.6.3/go.mod h1:ZylsxIMGNADRPRNW+NiBWhrwwks9vnKLQiCHYWb6Bi0= github.com/rancher/kine v0.4.0 h1:1IhWy3TzjExG8xnj46eyUEWdzqNAD1WrgL4eEBKm6Uc= github.com/rancher/kine v0.4.0/go.mod h1:IImtCJ68AIkE+VY/kUI0NkyJL5q5WzO8QvMsSXqbrpA= github.com/rancher/kubernetes v1.18.6-k3s1 h1:UyO6rKHsFg48cG7V19Ji0XPXScNxPJRlPPYWBKMmo6Y= @@ -673,21 +689,17 @@ github.com/rancher/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.18.6- github.com/rancher/kubernetes/staging/src/k8s.io/metrics v1.18.6-k3s1 h1:eUs9gsRU4YZ3f9MPniiLsCLvVHj8/DtcViQH9kGh8Qg= github.com/rancher/kubernetes/staging/src/k8s.io/metrics v1.18.6-k3s1/go.mod h1:xZM9EdJpWjqIWPvLiCP7vYKUEMwIgc0S8nc/MlLVK3Y= github.com/rancher/kubernetes/staging/src/k8s.io/sample-apiserver v1.18.6-k3s1/go.mod h1:p8OmVbdzpawdZ/r9E1qcdJpzRirEg4OcSg8aZVWqvJo= -github.com/rancher/moq v0.0.0-20190404221404-ee5226d43009/go.mod h1:wpITyDPTi/Na5h73XkbuEf2AP9fbgrIGqqxVzFhYD6U= +github.com/rancher/lasso v0.0.0-20200515155337-a34e1e26ad91 h1:p4VVl0tr6YAeUILFMCn+0DKzbUOS0ah9biSsL7Sy6S4= +github.com/rancher/lasso v0.0.0-20200515155337-a34e1e26ad91/go.mod h1:G6Vv2aj6xB2YjTVagmu4NkhBvbE8nBcGykHRENH6arI= github.com/rancher/nocode v0.0.0-20200630202308-cb097102c09f h1:mX6kuT3Ah9v1iEO3rgCQ7ZH9heVh67r3a9l94ua8P7U= github.com/rancher/nocode v0.0.0-20200630202308-cb097102c09f/go.mod h1:iAAt6Amgbysi6srDJs9SxGSbG2j/JSRb/xCrnEtA69g= github.com/rancher/remotedialer v0.2.0 h1:xD7t3K6JYwTdAsxmGtTHQMkEkFgKouQ1foLxVW424Dc= github.com/rancher/remotedialer v0.2.0/go.mod h1:tkU8ZvrR5lRgaKWaX71nAy6daeqvPFx/lJEnbW7tXSI= github.com/rancher/spur v0.0.0-20200617165101-8702c8e4ce7a h1:MIWeFYPZ/XXnskvcUqV8W89PFs+n/mr4YWMHeZuMpYs= github.com/rancher/spur v0.0.0-20200617165101-8702c8e4ce7a/go.mod h1:Q6L6c+4FRxY5CF1xG3oEAfH3tSQDf0NAZes7q7wRyPE= -github.com/rancher/wrangler v0.1.4/go.mod h1:EYP7cqpg42YqElaCm+U9ieSrGQKAXxUH5xsr+XGpWyE= github.com/rancher/wrangler v0.4.0/go.mod h1:1cR91WLhZgkZ+U4fV9nVuXqKurWbgXcIReU4wnQvTN8= -github.com/rancher/wrangler v0.6.0/go.mod h1:L4HtjPeX8iqLgsxfJgz+JjKMcX2q3qbRXSeTlC/CSd4= -github.com/rancher/wrangler v0.6.1 h1:7tyLk/FV2zCQkYg5SEtT4lSlsHNwa5yMOa797/VJhiQ= -github.com/rancher/wrangler v0.6.1/go.mod h1:L4HtjPeX8iqLgsxfJgz+JjKMcX2q3qbRXSeTlC/CSd4= -github.com/rancher/wrangler-api v0.2.0/go.mod h1:zTPdNLZO07KvRaVOx6XQbKBSV55Fnn4s7nqmrMPJqd8= -github.com/rancher/wrangler-api v0.6.0 h1:d/b0AkgZ+x41EYLIcUJiogtU3Y11Mqss2zr9VEKycRk= -github.com/rancher/wrangler-api v0.6.0/go.mod h1:RbuDkPNHhxcXuwAbLVvEAhH+UPAh+MIkpEd2fcGc0MM= +github.com/rancher/wrangler v0.6.2-0.20200721203632-787d93e49342 h1:uV30QVtfowET6yuTdW2shqoliWmcqxKLeaKgC7hj7Is= +github.com/rancher/wrangler v0.6.2-0.20200721203632-787d93e49342/go.mod h1:GSBsgNCMgSgpTXoyto5e35lTm5akYQVPzse5q3/rZ4w= github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= github.com/robfig/cron v1.1.0 h1:jk4/Hud3TTdcrJgUOBgsqrZBarcxl6ADIjSC2iniwLY= github.com/robfig/cron v1.1.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k= @@ -710,6 +722,7 @@ github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdh github.com/seccomp/libseccomp-golang v0.9.1 h1:NJjM5DNFOs0s3kYE1WUOr6G8V97sdt46rlXTMfXGWBo= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= @@ -736,6 +749,8 @@ github.com/spf13/cobra v0.0.2/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3 github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/jwalterweatherman v0.0.0-20180109140146-7c0cea34c8ec/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -746,13 +761,14 @@ 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.0.2/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/storageos/go-api v0.0.0-20180912212459-343b3eff91fc/go.mod h1:ZrLn+e0ZuF3Y65PNF6dIwbJPZqfmtCXxFm9ckv0agOY= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.3-0.20181224173747-660f15d67dbb/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -764,7 +780,6 @@ github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/tchap/go-patricia v2.3.0+incompatible h1:GkY4dP3cEfEASBPPkWd+AmjYxhmDkqO9/zg7R0lSQRs= github.com/tchap/go-patricia v2.3.0+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= -github.com/tektoncd/pipeline v0.4.0/go.mod h1:IZzJdiX9EqEMuUcgdnElozdYYRh0/ZRC+NKMLj1K3Yw= github.com/theckman/go-flock v0.7.1 h1:YdJyIjDuQdEU7voZ9YaeXSO4OnrxdI+WejPUwyZ/Txs= github.com/theckman/go-flock v0.7.1/go.mod h1:kjuth3y9VJ2aNlkNEO99G/8lp9fMIKaGyBmh84IBheM= github.com/thecodeteam/goscaleio v0.1.0/go.mod h1:68sdkZAsK8bvEwBlbQnlLS+xU+hvLYM/iQ8KXej1AwM= @@ -773,8 +788,11 @@ github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhV github.com/timakin/bodyclose v0.0.0-20190721030226-87058b9bfcec/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8 h1:ndzgwNDnKIqyCvHTXaCqh9KlOWKvBry6nuXMJmonVsE= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/u-root/u-root v5.0.0+incompatible/go.mod h1:RYkpo8pTHrNjW08opNd/U6p/RJE7K0D8fXO0d47+3YY= github.com/ugorji/go v0.0.0-20170107133203-ded73eae5db7/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ultraware/funlen v0.0.1/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= github.com/ultraware/funlen v0.0.2/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= @@ -808,7 +826,9 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1 h1:j2hhcujLRHAg872RWAV5yaUrEjHEObwDv3aImCaNLek= github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8= +github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= @@ -821,10 +841,15 @@ go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qL go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.starlark.net v0.0.0-20190528202925-30ae18b8564f/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg= +go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.uber.org/atomic v1.3.2 h1:2Oa65PReHzfn29GpvgsYwloV9AVFHPDk8tYxt2c2tr4= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= @@ -843,6 +868,7 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975 h1:/Tl7pH94bvbAAHBdZJT947M/+gp0+CqQXDtMRC0fseo= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -862,6 +888,8 @@ golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20170915142106-8351a756f30f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180112015858-5ccada7d0a7b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -869,6 +897,7 @@ golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -881,6 +910,7 @@ 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-20190502183928-7f726cade0ab/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= 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= @@ -890,6 +920,8 @@ golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191204025024-5ee1b9f4859a h1:+HHJiFUXVOIS9mr1ThqkQD1N8vpFCfCShqADBM12KTc= golang.org/x/net v0.0.0-20191204025024-5ee1b9f4859a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 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-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -905,6 +937,7 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20171026204733-164713f0dfce/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180117170059-2c42eef0765b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -928,12 +961,14 @@ golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e h1:9vRrk9YW2BTzLP0VCB9ZDjU4cPqkg+IDWL7XgxA1yxQ= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915090833-1cbadb444a80/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20171227012246-e19ae1496984/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -973,7 +1008,11 @@ golang.org/x/tools v0.0.0-20190909030654-5b82db07426d/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191017205301-920acffc3e65 h1:GwXwgmbrvlcHLDsENMqrQTTIC2C0kIPszsq929NruKI= golang.org/x/tools v0.0.0-20191017205301-920acffc3e65/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 h1:/atklqdjdhuosWIl6AIbOeHJjicWYPqR9bpxqxYG2pA= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gomodules.xyz/jsonpatch/v2 v2.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= gonum.org/v1/gonum v0.6.2 h1:4r+yNT0+8SWcOkXP+63H2zQbN+USnC73cjGUxnDF94Q= @@ -999,6 +1038,7 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2El google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -1008,6 +1048,7 @@ gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= @@ -1031,6 +1072,7 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWD gopkg.in/warnings.v0 v0.1.1 h1:XM28wIgFzaBmeZ5dNHIpWLQpt/9DGKxk+rCg/22nnYE= gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.0.0/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1038,6 +1080,8 @@ gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200121175148-a6ecf24a6d71/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.1.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= @@ -1051,7 +1095,6 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.2/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20190327210449-e17681d19d3a/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20191120174120-e74f70b9b27e/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200114144118-36b2048a9120 h1:RPscN6KhmG54S33L+lr3GS+oD1jmchIU0ll519K6FA4= k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= @@ -1061,12 +1104,12 @@ k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUc k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/kube-openapi v0.0.0-20190502190224-411b2483e503/go.mod h1:iU+ZGYsNlvU9XKUSso6SQfKTCCw7lFduMZy26Mgr2Fw= k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6 h1:Oh3Mzx5pJ+yIumsAD0MOECPVeXsVot0UkiaCGVyfGQY= k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= k8s.io/repo-infra v0.0.1-alpha.1/go.mod h1:wO1t9WaB99V80ljbeENTnayuEEwNZt7gECYh/CEyOJ8= k8s.io/system-validators v1.0.4/go.mod h1:HgSgTg4NAGNoYYjKsUyk52gdNi2PVDswQ9Iyn66R7NI= -k8s.io/utils v0.0.0-20190506122338-8fab8cb257d5/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89 h1:d4vVOjXm687F1iLSP2q3lyPPuyvTUt3aVoBpi2DqRsU= k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= @@ -1080,13 +1123,15 @@ mvdan.cc/unparam v0.0.0-20190209190245-fbb59629db34/go.mod h1:H6SUd1XjIs+qQCyskX rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7 h1:uuHDyjllyzRyCIvvn0OBjiRB0SgBZGqHNYAmjR7fO50= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= +sigs.k8s.io/cli-utils v0.16.0/go.mod h1:9Jqm9K2W6ShhCxsEuaz6HSRKKOXigPUx3ZfypGgxBLY= +sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns= sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0= sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= -sigs.k8s.io/structured-merge-diff v0.0.0-20190426204423-ea680f03cc65 h1:xJNnO2qzHtgVCSPoGkkltSpyEX7D7IJw1TmbE3G/7lY= -sigs.k8s.io/structured-merge-diff v0.0.0-20190426204423-ea680f03cc65/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +sigs.k8s.io/kustomize/kyaml v0.4.0/go.mod h1:XJL84E6sOFeNrQ7CADiemc1B0EjIxHo3OhW4o1aJYNw= sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E= sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/testing_frameworks v0.1.2/go.mod h1:ToQrwSC3s8Xf/lADdZp3Mktcql9CG0UAmdJG9th5i0w= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/pkg/cloudprovider/cloudprovider.go b/pkg/cloudprovider/cloudprovider.go index e36abd76a721..56d88d7a4a48 100644 --- a/pkg/cloudprovider/cloudprovider.go +++ b/pkg/cloudprovider/cloudprovider.go @@ -5,8 +5,8 @@ import ( "io" "github.com/rancher/k3s/pkg/version" - "github.com/rancher/wrangler-api/pkg/generated/controllers/core" - coreclient "github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1" + "github.com/rancher/wrangler/pkg/generated/controllers/core" + coreclient "github.com/rancher/wrangler/pkg/generated/controllers/core/v1" "github.com/rancher/wrangler/pkg/start" cloudprovider "k8s.io/cloud-provider" ) diff --git a/pkg/cluster/https.go b/pkg/cluster/https.go index 5dea465c278e..1195925dfeac 100644 --- a/pkg/cluster/https.go +++ b/pkg/cluster/https.go @@ -14,7 +14,7 @@ import ( "github.com/rancher/dynamiclistener/storage/memory" "github.com/rancher/k3s/pkg/daemons/config" "github.com/rancher/k3s/pkg/version" - "github.com/rancher/wrangler-api/pkg/generated/controllers/core" + "github.com/rancher/wrangler/pkg/generated/controllers/core" "github.com/sirupsen/logrus" ) @@ -33,7 +33,7 @@ func (c *Cluster) newListener(ctx context.Context) (net.Listener, http.Handler, return dynamiclistener.NewListener(tcp, storage, cert, key, dynamiclistener.Config{ CN: version.Program, Organization: []string{version.Program}, - TLSConfig: tls.Config{ + TLSConfig: &tls.Config{ ClientAuth: tls.RequestClientCert, MinVersion: c.config.TLSMinVersion, CipherSuites: c.config.TLSCipherSuites, diff --git a/pkg/daemons/config/types.go b/pkg/daemons/config/types.go index 9511573a13a9..8a765142769c 100644 --- a/pkg/daemons/config/types.go +++ b/pkg/daemons/config/types.go @@ -10,7 +10,7 @@ import ( "strings" "github.com/rancher/kine/pkg/endpoint" - "github.com/rancher/wrangler-api/pkg/generated/controllers/core" + "github.com/rancher/wrangler/pkg/generated/controllers/core" "k8s.io/apiserver/pkg/authentication/authenticator" ) diff --git a/pkg/daemons/control/server.go b/pkg/daemons/control/server.go index ae07c6e8c124..3d8ad28cdcc5 100644 --- a/pkg/daemons/control/server.go +++ b/pkg/daemons/control/server.go @@ -30,7 +30,7 @@ import ( "github.com/rancher/k3s/pkg/passwd" "github.com/rancher/k3s/pkg/token" "github.com/rancher/k3s/pkg/version" - "github.com/rancher/wrangler-api/pkg/generated/controllers/rbac" + "github.com/rancher/wrangler/pkg/generated/controllers/rbac" "github.com/sirupsen/logrus" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" apiserverconfigv1 "k8s.io/apiserver/pkg/apis/config/v1" diff --git a/pkg/etcd/controller.go b/pkg/etcd/controller.go index cf885f1e1f52..5e877c3a85bf 100644 --- a/pkg/etcd/controller.go +++ b/pkg/etcd/controller.go @@ -5,7 +5,7 @@ import ( "os" "time" - controllerv1 "github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1" + controllerv1 "github.com/rancher/wrangler/pkg/generated/controllers/core/v1" "github.com/sirupsen/logrus" v1 "k8s.io/api/core/v1" ) diff --git a/pkg/generated/clientset/versioned/clientset.go b/pkg/generated/clientset/versioned/clientset.go deleted file mode 100644 index 97dbcb95fd31..000000000000 --- a/pkg/generated/clientset/versioned/clientset.go +++ /dev/null @@ -1,97 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package versioned - -import ( - "fmt" - - k3sv1 "github.com/rancher/k3s/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1" - discovery "k8s.io/client-go/discovery" - rest "k8s.io/client-go/rest" - flowcontrol "k8s.io/client-go/util/flowcontrol" -) - -type Interface interface { - Discovery() discovery.DiscoveryInterface - K3sV1() k3sv1.K3sV1Interface -} - -// Clientset contains the clients for groups. Each group has exactly one -// version included in a Clientset. -type Clientset struct { - *discovery.DiscoveryClient - k3sV1 *k3sv1.K3sV1Client -} - -// K3sV1 retrieves the K3sV1Client -func (c *Clientset) K3sV1() k3sv1.K3sV1Interface { - return c.k3sV1 -} - -// Discovery retrieves the DiscoveryClient -func (c *Clientset) Discovery() discovery.DiscoveryInterface { - if c == nil { - return nil - } - return c.DiscoveryClient -} - -// NewForConfig creates a new Clientset for the given config. -// If config's RateLimiter is not set and QPS and Burst are acceptable, -// NewForConfig will generate a rate-limiter in configShallowCopy. -func NewForConfig(c *rest.Config) (*Clientset, error) { - configShallowCopy := *c - if configShallowCopy.RateLimiter == nil && configShallowCopy.QPS > 0 { - if configShallowCopy.Burst <= 0 { - return nil, fmt.Errorf("burst is required to be greater than 0 when RateLimiter is not set and QPS is set to greater than 0") - } - configShallowCopy.RateLimiter = flowcontrol.NewTokenBucketRateLimiter(configShallowCopy.QPS, configShallowCopy.Burst) - } - var cs Clientset - var err error - cs.k3sV1, err = k3sv1.NewForConfig(&configShallowCopy) - if err != nil { - return nil, err - } - - cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfig(&configShallowCopy) - if err != nil { - return nil, err - } - return &cs, nil -} - -// NewForConfigOrDie creates a new Clientset for the given config and -// panics if there is an error in the config. -func NewForConfigOrDie(c *rest.Config) *Clientset { - var cs Clientset - cs.k3sV1 = k3sv1.NewForConfigOrDie(c) - - cs.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c) - return &cs -} - -// New creates a new Clientset for the given RESTClient. -func New(c rest.Interface) *Clientset { - var cs Clientset - cs.k3sV1 = k3sv1.New(c) - - cs.DiscoveryClient = discovery.NewDiscoveryClient(c) - return &cs -} diff --git a/pkg/generated/clientset/versioned/doc.go b/pkg/generated/clientset/versioned/doc.go deleted file mode 100644 index 78439a3c1464..000000000000 --- a/pkg/generated/clientset/versioned/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -// This package has the automatically generated clientset. -package versioned diff --git a/pkg/generated/clientset/versioned/fake/clientset_generated.go b/pkg/generated/clientset/versioned/fake/clientset_generated.go deleted file mode 100644 index 263ea29e6879..000000000000 --- a/pkg/generated/clientset/versioned/fake/clientset_generated.go +++ /dev/null @@ -1,82 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package fake - -import ( - clientset "github.com/rancher/k3s/pkg/generated/clientset/versioned" - k3sv1 "github.com/rancher/k3s/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1" - fakek3sv1 "github.com/rancher/k3s/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/fake" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/discovery" - fakediscovery "k8s.io/client-go/discovery/fake" - "k8s.io/client-go/testing" -) - -// NewSimpleClientset returns a clientset that will respond with the provided objects. -// It's backed by a very simple object tracker that processes creates, updates and deletions as-is, -// without applying any validations and/or defaults. It shouldn't be considered a replacement -// for a real clientset and is mostly useful in simple unit tests. -func NewSimpleClientset(objects ...runtime.Object) *Clientset { - o := testing.NewObjectTracker(scheme, codecs.UniversalDecoder()) - for _, obj := range objects { - if err := o.Add(obj); err != nil { - panic(err) - } - } - - cs := &Clientset{tracker: o} - cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} - cs.AddReactor("*", "*", testing.ObjectReaction(o)) - cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { - gvr := action.GetResource() - ns := action.GetNamespace() - watch, err := o.Watch(gvr, ns) - if err != nil { - return false, nil, err - } - return true, watch, nil - }) - - return cs -} - -// Clientset implements clientset.Interface. Meant to be embedded into a -// struct to get a default implementation. This makes faking out just the method -// you want to test easier. -type Clientset struct { - testing.Fake - discovery *fakediscovery.FakeDiscovery - tracker testing.ObjectTracker -} - -func (c *Clientset) Discovery() discovery.DiscoveryInterface { - return c.discovery -} - -func (c *Clientset) Tracker() testing.ObjectTracker { - return c.tracker -} - -var _ clientset.Interface = &Clientset{} - -// K3sV1 retrieves the K3sV1Client -func (c *Clientset) K3sV1() k3sv1.K3sV1Interface { - return &fakek3sv1.FakeK3sV1{Fake: &c.Fake} -} diff --git a/pkg/generated/clientset/versioned/fake/doc.go b/pkg/generated/clientset/versioned/fake/doc.go deleted file mode 100644 index 8aaca0c7c59e..000000000000 --- a/pkg/generated/clientset/versioned/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -// This package has the automatically generated fake clientset. -package fake diff --git a/pkg/generated/clientset/versioned/fake/register.go b/pkg/generated/clientset/versioned/fake/register.go deleted file mode 100644 index 9cf6cdf008dd..000000000000 --- a/pkg/generated/clientset/versioned/fake/register.go +++ /dev/null @@ -1,56 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package fake - -import ( - k3sv1 "github.com/rancher/k3s/pkg/apis/k3s.cattle.io/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - schema "k8s.io/apimachinery/pkg/runtime/schema" - serializer "k8s.io/apimachinery/pkg/runtime/serializer" - utilruntime "k8s.io/apimachinery/pkg/util/runtime" -) - -var scheme = runtime.NewScheme() -var codecs = serializer.NewCodecFactory(scheme) -var parameterCodec = runtime.NewParameterCodec(scheme) -var localSchemeBuilder = runtime.SchemeBuilder{ - k3sv1.AddToScheme, -} - -// AddToScheme adds all types of this clientset into the given scheme. This allows composition -// of clientsets, like in: -// -// import ( -// "k8s.io/client-go/kubernetes" -// clientsetscheme "k8s.io/client-go/kubernetes/scheme" -// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" -// ) -// -// kclientset, _ := kubernetes.NewForConfig(c) -// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) -// -// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types -// correctly. -var AddToScheme = localSchemeBuilder.AddToScheme - -func init() { - v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"}) - utilruntime.Must(AddToScheme(scheme)) -} diff --git a/pkg/generated/clientset/versioned/scheme/doc.go b/pkg/generated/clientset/versioned/scheme/doc.go deleted file mode 100644 index 6bd144ec297a..000000000000 --- a/pkg/generated/clientset/versioned/scheme/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -// This package contains the scheme of the automatically generated clientset. -package scheme diff --git a/pkg/generated/clientset/versioned/scheme/register.go b/pkg/generated/clientset/versioned/scheme/register.go deleted file mode 100644 index 429832fa158a..000000000000 --- a/pkg/generated/clientset/versioned/scheme/register.go +++ /dev/null @@ -1,56 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package scheme - -import ( - k3sv1 "github.com/rancher/k3s/pkg/apis/k3s.cattle.io/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - schema "k8s.io/apimachinery/pkg/runtime/schema" - serializer "k8s.io/apimachinery/pkg/runtime/serializer" - utilruntime "k8s.io/apimachinery/pkg/util/runtime" -) - -var Scheme = runtime.NewScheme() -var Codecs = serializer.NewCodecFactory(Scheme) -var ParameterCodec = runtime.NewParameterCodec(Scheme) -var localSchemeBuilder = runtime.SchemeBuilder{ - k3sv1.AddToScheme, -} - -// AddToScheme adds all types of this clientset into the given scheme. This allows composition -// of clientsets, like in: -// -// import ( -// "k8s.io/client-go/kubernetes" -// clientsetscheme "k8s.io/client-go/kubernetes/scheme" -// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" -// ) -// -// kclientset, _ := kubernetes.NewForConfig(c) -// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) -// -// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types -// correctly. -var AddToScheme = localSchemeBuilder.AddToScheme - -func init() { - v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"}) - utilruntime.Must(AddToScheme(Scheme)) -} diff --git a/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/addon.go b/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/addon.go deleted file mode 100644 index 7e79fa35d80f..000000000000 --- a/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/addon.go +++ /dev/null @@ -1,195 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package v1 - -import ( - "context" - "time" - - v1 "github.com/rancher/k3s/pkg/apis/k3s.cattle.io/v1" - scheme "github.com/rancher/k3s/pkg/generated/clientset/versioned/scheme" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - rest "k8s.io/client-go/rest" -) - -// AddonsGetter has a method to return a AddonInterface. -// A group's client should implement this interface. -type AddonsGetter interface { - Addons(namespace string) AddonInterface -} - -// AddonInterface has methods to work with Addon resources. -type AddonInterface interface { - Create(ctx context.Context, addon *v1.Addon, opts metav1.CreateOptions) (*v1.Addon, error) - Update(ctx context.Context, addon *v1.Addon, opts metav1.UpdateOptions) (*v1.Addon, error) - UpdateStatus(ctx context.Context, addon *v1.Addon, opts metav1.UpdateOptions) (*v1.Addon, error) - Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error - DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error - Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.Addon, error) - List(ctx context.Context, opts metav1.ListOptions) (*v1.AddonList, error) - Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) - Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Addon, err error) - AddonExpansion -} - -// addons implements AddonInterface -type addons struct { - client rest.Interface - ns string -} - -// newAddons returns a Addons -func newAddons(c *K3sV1Client, namespace string) *addons { - return &addons{ - client: c.RESTClient(), - ns: namespace, - } -} - -// Get takes name of the addon, and returns the corresponding addon object, and an error if there is any. -func (c *addons) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.Addon, err error) { - result = &v1.Addon{} - err = c.client.Get(). - Namespace(c.ns). - Resource("addons"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of Addons that match those selectors. -func (c *addons) List(ctx context.Context, opts metav1.ListOptions) (result *v1.AddonList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.AddonList{} - err = c.client.Get(). - Namespace(c.ns). - Resource("addons"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested addons. -func (c *addons) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - opts.Watch = true - return c.client.Get(). - Namespace(c.ns). - Resource("addons"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a addon and creates it. Returns the server's representation of the addon, and an error, if there is any. -func (c *addons) Create(ctx context.Context, addon *v1.Addon, opts metav1.CreateOptions) (result *v1.Addon, err error) { - result = &v1.Addon{} - err = c.client.Post(). - Namespace(c.ns). - Resource("addons"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(addon). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a addon and updates it. Returns the server's representation of the addon, and an error, if there is any. -func (c *addons) Update(ctx context.Context, addon *v1.Addon, opts metav1.UpdateOptions) (result *v1.Addon, err error) { - result = &v1.Addon{} - err = c.client.Put(). - Namespace(c.ns). - Resource("addons"). - Name(addon.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(addon). - Do(ctx). - Into(result) - return -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *addons) UpdateStatus(ctx context.Context, addon *v1.Addon, opts metav1.UpdateOptions) (result *v1.Addon, err error) { - result = &v1.Addon{} - err = c.client.Put(). - Namespace(c.ns). - Resource("addons"). - Name(addon.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(addon). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the addon and deletes it. Returns an error if one occurs. -func (c *addons) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Namespace(c.ns). - Resource("addons"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *addons) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Namespace(c.ns). - Resource("addons"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched addon. -func (c *addons) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.Addon, err error) { - result = &v1.Addon{} - err = c.client.Patch(pt). - Namespace(c.ns). - Resource("addons"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/doc.go b/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/doc.go deleted file mode 100644 index 761c8c49d495..000000000000 --- a/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -// This package has the automatically generated typed clients. -package v1 diff --git a/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/fake/doc.go b/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/fake/doc.go deleted file mode 100644 index ccad4cbc1cbb..000000000000 --- a/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/fake/fake_addon.go b/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/fake/fake_addon.go deleted file mode 100644 index 5b9f9e53b56e..000000000000 --- a/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/fake/fake_addon.go +++ /dev/null @@ -1,142 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package fake - -import ( - "context" - - k3scattleiov1 "github.com/rancher/k3s/pkg/apis/k3s.cattle.io/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeAddons implements AddonInterface -type FakeAddons struct { - Fake *FakeK3sV1 - ns string -} - -var addonsResource = schema.GroupVersionResource{Group: "k3s.cattle.io", Version: "v1", Resource: "addons"} - -var addonsKind = schema.GroupVersionKind{Group: "k3s.cattle.io", Version: "v1", Kind: "Addon"} - -// Get takes name of the addon, and returns the corresponding addon object, and an error if there is any. -func (c *FakeAddons) Get(ctx context.Context, name string, options v1.GetOptions) (result *k3scattleiov1.Addon, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(addonsResource, c.ns, name), &k3scattleiov1.Addon{}) - - if obj == nil { - return nil, err - } - return obj.(*k3scattleiov1.Addon), err -} - -// List takes label and field selectors, and returns the list of Addons that match those selectors. -func (c *FakeAddons) List(ctx context.Context, opts v1.ListOptions) (result *k3scattleiov1.AddonList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(addonsResource, addonsKind, c.ns, opts), &k3scattleiov1.AddonList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &k3scattleiov1.AddonList{ListMeta: obj.(*k3scattleiov1.AddonList).ListMeta} - for _, item := range obj.(*k3scattleiov1.AddonList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested addons. -func (c *FakeAddons) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(addonsResource, c.ns, opts)) - -} - -// Create takes the representation of a addon and creates it. Returns the server's representation of the addon, and an error, if there is any. -func (c *FakeAddons) Create(ctx context.Context, addon *k3scattleiov1.Addon, opts v1.CreateOptions) (result *k3scattleiov1.Addon, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(addonsResource, c.ns, addon), &k3scattleiov1.Addon{}) - - if obj == nil { - return nil, err - } - return obj.(*k3scattleiov1.Addon), err -} - -// Update takes the representation of a addon and updates it. Returns the server's representation of the addon, and an error, if there is any. -func (c *FakeAddons) Update(ctx context.Context, addon *k3scattleiov1.Addon, opts v1.UpdateOptions) (result *k3scattleiov1.Addon, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(addonsResource, c.ns, addon), &k3scattleiov1.Addon{}) - - if obj == nil { - return nil, err - } - return obj.(*k3scattleiov1.Addon), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeAddons) UpdateStatus(ctx context.Context, addon *k3scattleiov1.Addon, opts v1.UpdateOptions) (*k3scattleiov1.Addon, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(addonsResource, "status", c.ns, addon), &k3scattleiov1.Addon{}) - - if obj == nil { - return nil, err - } - return obj.(*k3scattleiov1.Addon), err -} - -// Delete takes name of the addon and deletes it. Returns an error if one occurs. -func (c *FakeAddons) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(addonsResource, c.ns, name), &k3scattleiov1.Addon{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeAddons) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(addonsResource, c.ns, listOpts) - - _, err := c.Fake.Invokes(action, &k3scattleiov1.AddonList{}) - return err -} - -// Patch applies the patch and returns the patched addon. -func (c *FakeAddons) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *k3scattleiov1.Addon, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(addonsResource, c.ns, name, pt, data, subresources...), &k3scattleiov1.Addon{}) - - if obj == nil { - return nil, err - } - return obj.(*k3scattleiov1.Addon), err -} diff --git a/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/fake/fake_k3s.cattle.io_client.go b/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/fake/fake_k3s.cattle.io_client.go deleted file mode 100644 index 778ae547c828..000000000000 --- a/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/fake/fake_k3s.cattle.io_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package fake - -import ( - v1 "github.com/rancher/k3s/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeK3sV1 struct { - *testing.Fake -} - -func (c *FakeK3sV1) Addons(namespace string) v1.AddonInterface { - return &FakeAddons{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeK3sV1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/generated_expansion.go b/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/generated_expansion.go deleted file mode 100644 index 1b681d3f1fe3..000000000000 --- a/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/generated_expansion.go +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package v1 - -type AddonExpansion interface{} diff --git a/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/k3s.cattle.io_client.go b/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/k3s.cattle.io_client.go deleted file mode 100644 index ac9dbd8634ab..000000000000 --- a/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1/k3s.cattle.io_client.go +++ /dev/null @@ -1,89 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package v1 - -import ( - v1 "github.com/rancher/k3s/pkg/apis/k3s.cattle.io/v1" - "github.com/rancher/k3s/pkg/generated/clientset/versioned/scheme" - rest "k8s.io/client-go/rest" -) - -type K3sV1Interface interface { - RESTClient() rest.Interface - AddonsGetter -} - -// K3sV1Client is used to interact with features provided by the k3s.cattle.io group. -type K3sV1Client struct { - restClient rest.Interface -} - -func (c *K3sV1Client) Addons(namespace string) AddonInterface { - return newAddons(c, namespace) -} - -// NewForConfig creates a new K3sV1Client for the given config. -func NewForConfig(c *rest.Config) (*K3sV1Client, error) { - config := *c - if err := setConfigDefaults(&config); err != nil { - return nil, err - } - client, err := rest.RESTClientFor(&config) - if err != nil { - return nil, err - } - return &K3sV1Client{client}, nil -} - -// NewForConfigOrDie creates a new K3sV1Client for the given config and -// panics if there is an error in the config. -func NewForConfigOrDie(c *rest.Config) *K3sV1Client { - client, err := NewForConfig(c) - if err != nil { - panic(err) - } - return client -} - -// New creates a new K3sV1Client for the given RESTClient. -func New(c rest.Interface) *K3sV1Client { - return &K3sV1Client{c} -} - -func setConfigDefaults(config *rest.Config) error { - gv := v1.SchemeGroupVersion - config.GroupVersion = &gv - config.APIPath = "/apis" - config.NegotiatedSerializer = scheme.Codecs.WithoutConversion() - - if config.UserAgent == "" { - config.UserAgent = rest.DefaultKubernetesUserAgent() - } - - return nil -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *K3sV1Client) RESTClient() rest.Interface { - if c == nil { - return nil - } - return c.restClient -} diff --git a/pkg/generated/controllers/k3s.cattle.io/factory.go b/pkg/generated/controllers/k3s.cattle.io/factory.go index 9191cb0d8029..e0c2f5a4f551 100644 --- a/pkg/generated/controllers/k3s.cattle.io/factory.go +++ b/pkg/generated/controllers/k3s.cattle.io/factory.go @@ -19,28 +19,12 @@ limitations under the License. package k3s import ( - "context" - "time" - - clientset "github.com/rancher/k3s/pkg/generated/clientset/versioned" - scheme "github.com/rancher/k3s/pkg/generated/clientset/versioned/scheme" - informers "github.com/rancher/k3s/pkg/generated/informers/externalversions" "github.com/rancher/wrangler/pkg/generic" - "github.com/rancher/wrangler/pkg/schemes" - "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/rest" ) -func init() { - scheme.AddToScheme(schemes.All) -} - type Factory struct { - synced bool - informerFactory informers.SharedInformerFactory - clientset clientset.Interface - controllerManager *generic.ControllerManager - threadiness map[schema.GroupVersionKind]int + *generic.Factory } func NewFactoryFromConfigOrDie(config *rest.Config) *Factory { @@ -61,66 +45,15 @@ func NewFactoryFromConfigWithNamespace(config *rest.Config, namespace string) (* }) } -type FactoryOptions struct { - Namespace string - Resync time.Duration -} +type FactoryOptions = generic.FactoryOptions func NewFactoryFromConfigWithOptions(config *rest.Config, opts *FactoryOptions) (*Factory, error) { - if opts == nil { - opts = &FactoryOptions{} - } - - cs, err := clientset.NewForConfig(config) - if err != nil { - return nil, err - } - - resync := opts.Resync - if resync == 0 { - resync = 2 * time.Hour - } - - if opts.Namespace == "" { - informerFactory := informers.NewSharedInformerFactory(cs, resync) - return NewFactory(cs, informerFactory), nil - } - - informerFactory := informers.NewSharedInformerFactoryWithOptions(cs, resync, informers.WithNamespace(opts.Namespace)) - return NewFactory(cs, informerFactory), nil -} - -func NewFactory(clientset clientset.Interface, informerFactory informers.SharedInformerFactory) *Factory { + f, err := generic.NewFactoryFromConfigWithOptions(config, opts) return &Factory{ - threadiness: map[schema.GroupVersionKind]int{}, - controllerManager: &generic.ControllerManager{}, - clientset: clientset, - informerFactory: informerFactory, - } -} - -func (c *Factory) Controllers() map[schema.GroupVersionKind]*generic.Controller { - return c.controllerManager.Controllers() -} - -func (c *Factory) SetThreadiness(gvk schema.GroupVersionKind, threadiness int) { - c.threadiness[gvk] = threadiness -} - -func (c *Factory) Sync(ctx context.Context) error { - c.informerFactory.Start(ctx.Done()) - c.informerFactory.WaitForCacheSync(ctx.Done()) - return nil -} - -func (c *Factory) Start(ctx context.Context, defaultThreadiness int) error { - if err := c.Sync(ctx); err != nil { - return err - } - - return c.controllerManager.Start(ctx, defaultThreadiness, c.threadiness) + Factory: f, + }, err } func (c *Factory) K3s() Interface { - return New(c.controllerManager, c.informerFactory.K3s(), c.clientset) + return New(c.ControllerFactory()) } diff --git a/pkg/generated/controllers/k3s.cattle.io/interface.go b/pkg/generated/controllers/k3s.cattle.io/interface.go index 201695983c42..d327e83d26af 100644 --- a/pkg/generated/controllers/k3s.cattle.io/interface.go +++ b/pkg/generated/controllers/k3s.cattle.io/interface.go @@ -19,10 +19,8 @@ limitations under the License. package k3s import ( - clientset "github.com/rancher/k3s/pkg/generated/clientset/versioned" v1 "github.com/rancher/k3s/pkg/generated/controllers/k3s.cattle.io/v1" - informers "github.com/rancher/k3s/pkg/generated/informers/externalversions/k3s.cattle.io" - "github.com/rancher/wrangler/pkg/generic" + "github.com/rancher/lasso/pkg/controller" ) type Interface interface { @@ -30,21 +28,16 @@ type Interface interface { } type group struct { - controllerManager *generic.ControllerManager - informers informers.Interface - client clientset.Interface + controllerFactory controller.SharedControllerFactory } // New returns a new Interface. -func New(controllerManager *generic.ControllerManager, informers informers.Interface, - client clientset.Interface) Interface { +func New(controllerFactory controller.SharedControllerFactory) Interface { return &group{ - controllerManager: controllerManager, - informers: informers, - client: client, + controllerFactory: controllerFactory, } } func (g *group) V1() v1.Interface { - return v1.New(g.controllerManager, g.client.K3sV1(), g.informers.V1()) + return v1.New(g.controllerFactory) } diff --git a/pkg/generated/controllers/k3s.cattle.io/v1/addon.go b/pkg/generated/controllers/k3s.cattle.io/v1/addon.go index 70821f25b45b..2eaac2ee463b 100644 --- a/pkg/generated/controllers/k3s.cattle.io/v1/addon.go +++ b/pkg/generated/controllers/k3s.cattle.io/v1/addon.go @@ -23,9 +23,8 @@ import ( "time" v1 "github.com/rancher/k3s/pkg/apis/k3s.cattle.io/v1" - clientset "github.com/rancher/k3s/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1" - informers "github.com/rancher/k3s/pkg/generated/informers/externalversions/k3s.cattle.io/v1" - listers "github.com/rancher/k3s/pkg/generated/listers/k3s.cattle.io/v1" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/apply" "github.com/rancher/wrangler/pkg/condition" "github.com/rancher/wrangler/pkg/generic" @@ -78,18 +77,22 @@ type AddonCache interface { type AddonIndexer func(obj *v1.Addon) ([]string, error) type addonController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.AddonsGetter - informer informers.AddonInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewAddonController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.AddonsGetter, informer informers.AddonInformer) AddonController { +func NewAddonController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) AddonController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &addonController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -136,12 +139,11 @@ func UpdateAddonDeepCopyOnChange(client AddonClient, obj *v1.Addon, handler func } func (c *addonController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *addonController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *addonController) OnChange(ctx context.Context, name string, sync AddonHandler) { @@ -149,20 +151,19 @@ func (c *addonController) OnChange(ctx context.Context, name string, sync AddonH } func (c *addonController) OnRemove(ctx context.Context, name string, sync AddonHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromAddonHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromAddonHandlerToHandler(sync))) } func (c *addonController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *addonController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *addonController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *addonController) GroupVersionKind() schema.GroupVersionKind { @@ -171,57 +172,75 @@ func (c *addonController) GroupVersionKind() schema.GroupVersionKind { func (c *addonController) Cache() AddonCache { return &addonCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *addonController) Create(obj *v1.Addon) (*v1.Addon, error) { - return c.clientGetter.Addons(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.Addon{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *addonController) Update(obj *v1.Addon) (*v1.Addon, error) { - return c.clientGetter.Addons(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Addon{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *addonController) UpdateStatus(obj *v1.Addon) (*v1.Addon, error) { - return c.clientGetter.Addons(obj.Namespace).UpdateStatus(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Addon{} + return result, c.client.UpdateStatus(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *addonController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.Addons(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *addonController) Get(namespace, name string, options metav1.GetOptions) (*v1.Addon, error) { - return c.clientGetter.Addons(namespace).Get(context.TODO(), name, options) + result := &v1.Addon{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *addonController) List(namespace string, opts metav1.ListOptions) (*v1.AddonList, error) { - return c.clientGetter.Addons(namespace).List(context.TODO(), opts) + result := &v1.AddonList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *addonController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.Addons(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *addonController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Addon, err error) { - return c.clientGetter.Addons(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *addonController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.Addon, error) { + result := &v1.Addon{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type addonCache struct { - lister listers.AddonLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *addonCache) Get(namespace, name string) (*v1.Addon, error) { - return c.lister.Addons(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.Addon), nil } -func (c *addonCache) List(namespace string, selector labels.Selector) ([]*v1.Addon, error) { - return c.lister.Addons(namespace).List(selector) +func (c *addonCache) List(namespace string, selector labels.Selector) (ret []*v1.Addon, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Addon)) + }) + + return ret, err } func (c *addonCache) AddIndexer(indexName string, indexer AddonIndexer) { diff --git a/pkg/generated/controllers/k3s.cattle.io/v1/interface.go b/pkg/generated/controllers/k3s.cattle.io/v1/interface.go index 89a3e7a34522..a8b64d388628 100644 --- a/pkg/generated/controllers/k3s.cattle.io/v1/interface.go +++ b/pkg/generated/controllers/k3s.cattle.io/v1/interface.go @@ -20,30 +20,29 @@ package v1 import ( v1 "github.com/rancher/k3s/pkg/apis/k3s.cattle.io/v1" - clientset "github.com/rancher/k3s/pkg/generated/clientset/versioned/typed/k3s.cattle.io/v1" - informers "github.com/rancher/k3s/pkg/generated/informers/externalversions/k3s.cattle.io/v1" - "github.com/rancher/wrangler/pkg/generic" + "github.com/rancher/lasso/pkg/controller" + "github.com/rancher/wrangler/pkg/schemes" + "k8s.io/apimachinery/pkg/runtime/schema" ) +func init() { + schemes.Register(v1.AddToScheme) +} + type Interface interface { Addon() AddonController } -func New(controllerManager *generic.ControllerManager, client clientset.K3sV1Interface, - informers informers.Interface) Interface { +func New(controllerFactory controller.SharedControllerFactory) Interface { return &version{ - controllerManager: controllerManager, - client: client, - informers: informers, + controllerFactory: controllerFactory, } } type version struct { - controllerManager *generic.ControllerManager - informers informers.Interface - client clientset.K3sV1Interface + controllerFactory controller.SharedControllerFactory } func (c *version) Addon() AddonController { - return NewAddonController(v1.SchemeGroupVersion.WithKind("Addon"), c.controllerManager, c.client, c.informers.Addons()) + return NewAddonController(schema.GroupVersionKind{Group: "k3s.cattle.io", Version: "v1", Kind: "Addon"}, "addons", true, c.controllerFactory) } diff --git a/pkg/generated/informers/externalversions/factory.go b/pkg/generated/informers/externalversions/factory.go deleted file mode 100644 index 2b1d5c3f9fd0..000000000000 --- a/pkg/generated/informers/externalversions/factory.go +++ /dev/null @@ -1,180 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package externalversions - -import ( - reflect "reflect" - sync "sync" - time "time" - - versioned "github.com/rancher/k3s/pkg/generated/clientset/versioned" - internalinterfaces "github.com/rancher/k3s/pkg/generated/informers/externalversions/internalinterfaces" - k3scattleio "github.com/rancher/k3s/pkg/generated/informers/externalversions/k3s.cattle.io" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - schema "k8s.io/apimachinery/pkg/runtime/schema" - cache "k8s.io/client-go/tools/cache" -) - -// SharedInformerOption defines the functional option type for SharedInformerFactory. -type SharedInformerOption func(*sharedInformerFactory) *sharedInformerFactory - -type sharedInformerFactory struct { - client versioned.Interface - namespace string - tweakListOptions internalinterfaces.TweakListOptionsFunc - lock sync.Mutex - defaultResync time.Duration - customResync map[reflect.Type]time.Duration - - informers map[reflect.Type]cache.SharedIndexInformer - // startedInformers is used for tracking which informers have been started. - // This allows Start() to be called multiple times safely. - startedInformers map[reflect.Type]bool -} - -// WithCustomResyncConfig sets a custom resync period for the specified informer types. -func WithCustomResyncConfig(resyncConfig map[v1.Object]time.Duration) SharedInformerOption { - return func(factory *sharedInformerFactory) *sharedInformerFactory { - for k, v := range resyncConfig { - factory.customResync[reflect.TypeOf(k)] = v - } - return factory - } -} - -// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory. -func WithTweakListOptions(tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerOption { - return func(factory *sharedInformerFactory) *sharedInformerFactory { - factory.tweakListOptions = tweakListOptions - return factory - } -} - -// WithNamespace limits the SharedInformerFactory to the specified namespace. -func WithNamespace(namespace string) SharedInformerOption { - return func(factory *sharedInformerFactory) *sharedInformerFactory { - factory.namespace = namespace - return factory - } -} - -// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces. -func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory { - return NewSharedInformerFactoryWithOptions(client, defaultResync) -} - -// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory. -// Listers obtained via this SharedInformerFactory will be subject to the same filters -// as specified here. -// Deprecated: Please use NewSharedInformerFactoryWithOptions instead -func NewFilteredSharedInformerFactory(client versioned.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory { - return NewSharedInformerFactoryWithOptions(client, defaultResync, WithNamespace(namespace), WithTweakListOptions(tweakListOptions)) -} - -// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options. -func NewSharedInformerFactoryWithOptions(client versioned.Interface, defaultResync time.Duration, options ...SharedInformerOption) SharedInformerFactory { - factory := &sharedInformerFactory{ - client: client, - namespace: v1.NamespaceAll, - defaultResync: defaultResync, - informers: make(map[reflect.Type]cache.SharedIndexInformer), - startedInformers: make(map[reflect.Type]bool), - customResync: make(map[reflect.Type]time.Duration), - } - - // Apply all options - for _, opt := range options { - factory = opt(factory) - } - - return factory -} - -// Start initializes all requested informers. -func (f *sharedInformerFactory) Start(stopCh <-chan struct{}) { - f.lock.Lock() - defer f.lock.Unlock() - - for informerType, informer := range f.informers { - if !f.startedInformers[informerType] { - go informer.Run(stopCh) - f.startedInformers[informerType] = true - } - } -} - -// WaitForCacheSync waits for all started informers' cache were synced. -func (f *sharedInformerFactory) WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool { - informers := func() map[reflect.Type]cache.SharedIndexInformer { - f.lock.Lock() - defer f.lock.Unlock() - - informers := map[reflect.Type]cache.SharedIndexInformer{} - for informerType, informer := range f.informers { - if f.startedInformers[informerType] { - informers[informerType] = informer - } - } - return informers - }() - - res := map[reflect.Type]bool{} - for informType, informer := range informers { - res[informType] = cache.WaitForCacheSync(stopCh, informer.HasSynced) - } - return res -} - -// InternalInformerFor returns the SharedIndexInformer for obj using an internal -// client. -func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internalinterfaces.NewInformerFunc) cache.SharedIndexInformer { - f.lock.Lock() - defer f.lock.Unlock() - - informerType := reflect.TypeOf(obj) - informer, exists := f.informers[informerType] - if exists { - return informer - } - - resyncPeriod, exists := f.customResync[informerType] - if !exists { - resyncPeriod = f.defaultResync - } - - informer = newFunc(f.client, resyncPeriod) - f.informers[informerType] = informer - - return informer -} - -// SharedInformerFactory provides shared informers for resources in all known -// API group versions. -type SharedInformerFactory interface { - internalinterfaces.SharedInformerFactory - ForResource(resource schema.GroupVersionResource) (GenericInformer, error) - WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool - - K3s() k3scattleio.Interface -} - -func (f *sharedInformerFactory) K3s() k3scattleio.Interface { - return k3scattleio.New(f, f.namespace, f.tweakListOptions) -} diff --git a/pkg/generated/informers/externalversions/generic.go b/pkg/generated/informers/externalversions/generic.go deleted file mode 100644 index c7c1ef860597..000000000000 --- a/pkg/generated/informers/externalversions/generic.go +++ /dev/null @@ -1,62 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package externalversions - -import ( - "fmt" - - v1 "github.com/rancher/k3s/pkg/apis/k3s.cattle.io/v1" - schema "k8s.io/apimachinery/pkg/runtime/schema" - cache "k8s.io/client-go/tools/cache" -) - -// GenericInformer is type of SharedIndexInformer which will locate and delegate to other -// sharedInformers based on type -type GenericInformer interface { - Informer() cache.SharedIndexInformer - Lister() cache.GenericLister -} - -type genericInformer struct { - informer cache.SharedIndexInformer - resource schema.GroupResource -} - -// Informer returns the SharedIndexInformer. -func (f *genericInformer) Informer() cache.SharedIndexInformer { - return f.informer -} - -// Lister returns the GenericLister. -func (f *genericInformer) Lister() cache.GenericLister { - return cache.NewGenericLister(f.Informer().GetIndexer(), f.resource) -} - -// ForResource gives generic access to a shared informer of the matching type -// TODO extend this to unknown resources with a client pool -func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) { - switch resource { - // Group=k3s.cattle.io, Version=v1 - case v1.SchemeGroupVersion.WithResource("addons"): - return &genericInformer{resource: resource.GroupResource(), informer: f.K3s().V1().Addons().Informer()}, nil - - } - - return nil, fmt.Errorf("no informer found for %v", resource) -} diff --git a/pkg/generated/informers/externalversions/internalinterfaces/factory_interfaces.go b/pkg/generated/informers/externalversions/internalinterfaces/factory_interfaces.go deleted file mode 100644 index 70fe8bf9b42f..000000000000 --- a/pkg/generated/informers/externalversions/internalinterfaces/factory_interfaces.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package internalinterfaces - -import ( - time "time" - - versioned "github.com/rancher/k3s/pkg/generated/clientset/versioned" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - cache "k8s.io/client-go/tools/cache" -) - -// NewInformerFunc takes versioned.Interface and time.Duration to return a SharedIndexInformer. -type NewInformerFunc func(versioned.Interface, time.Duration) cache.SharedIndexInformer - -// SharedInformerFactory a small interface to allow for adding an informer without an import cycle -type SharedInformerFactory interface { - Start(stopCh <-chan struct{}) - InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer -} - -// TweakListOptionsFunc is a function that transforms a v1.ListOptions. -type TweakListOptionsFunc func(*v1.ListOptions) diff --git a/pkg/generated/informers/externalversions/k3s.cattle.io/interface.go b/pkg/generated/informers/externalversions/k3s.cattle.io/interface.go deleted file mode 100644 index 8bf844775c21..000000000000 --- a/pkg/generated/informers/externalversions/k3s.cattle.io/interface.go +++ /dev/null @@ -1,46 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package k3s - -import ( - internalinterfaces "github.com/rancher/k3s/pkg/generated/informers/externalversions/internalinterfaces" - v1 "github.com/rancher/k3s/pkg/generated/informers/externalversions/k3s.cattle.io/v1" -) - -// Interface provides access to each of this group's versions. -type Interface interface { - // V1 provides access to shared informers for resources in V1. - V1() v1.Interface -} - -type group struct { - factory internalinterfaces.SharedInformerFactory - namespace string - tweakListOptions internalinterfaces.TweakListOptionsFunc -} - -// New returns a new Interface. -func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface { - return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions} -} - -// V1 returns a new v1.Interface. -func (g *group) V1() v1.Interface { - return v1.New(g.factory, g.namespace, g.tweakListOptions) -} diff --git a/pkg/generated/informers/externalversions/k3s.cattle.io/v1/addon.go b/pkg/generated/informers/externalversions/k3s.cattle.io/v1/addon.go deleted file mode 100644 index 34fa427674bd..000000000000 --- a/pkg/generated/informers/externalversions/k3s.cattle.io/v1/addon.go +++ /dev/null @@ -1,90 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package v1 - -import ( - "context" - time "time" - - k3scattleiov1 "github.com/rancher/k3s/pkg/apis/k3s.cattle.io/v1" - versioned "github.com/rancher/k3s/pkg/generated/clientset/versioned" - internalinterfaces "github.com/rancher/k3s/pkg/generated/informers/externalversions/internalinterfaces" - v1 "github.com/rancher/k3s/pkg/generated/listers/k3s.cattle.io/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - watch "k8s.io/apimachinery/pkg/watch" - cache "k8s.io/client-go/tools/cache" -) - -// AddonInformer provides access to a shared informer and lister for -// Addons. -type AddonInformer interface { - Informer() cache.SharedIndexInformer - Lister() v1.AddonLister -} - -type addonInformer struct { - factory internalinterfaces.SharedInformerFactory - tweakListOptions internalinterfaces.TweakListOptionsFunc - namespace string -} - -// NewAddonInformer constructs a new informer for Addon type. -// Always prefer using an informer factory to get a shared informer instead of getting an independent -// one. This reduces memory footprint and number of connections to the server. -func NewAddonInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { - return NewFilteredAddonInformer(client, namespace, resyncPeriod, indexers, nil) -} - -// NewFilteredAddonInformer constructs a new informer for Addon type. -// Always prefer using an informer factory to get a shared informer instead of getting an independent -// one. This reduces memory footprint and number of connections to the server. -func NewFilteredAddonInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { - return cache.NewSharedIndexInformer( - &cache.ListWatch{ - ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { - if tweakListOptions != nil { - tweakListOptions(&options) - } - return client.K3sV1().Addons(namespace).List(context.TODO(), options) - }, - WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { - if tweakListOptions != nil { - tweakListOptions(&options) - } - return client.K3sV1().Addons(namespace).Watch(context.TODO(), options) - }, - }, - &k3scattleiov1.Addon{}, - resyncPeriod, - indexers, - ) -} - -func (f *addonInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { - return NewFilteredAddonInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) -} - -func (f *addonInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&k3scattleiov1.Addon{}, f.defaultInformer) -} - -func (f *addonInformer) Lister() v1.AddonLister { - return v1.NewAddonLister(f.Informer().GetIndexer()) -} diff --git a/pkg/generated/informers/externalversions/k3s.cattle.io/v1/interface.go b/pkg/generated/informers/externalversions/k3s.cattle.io/v1/interface.go deleted file mode 100644 index 855c7c0b3723..000000000000 --- a/pkg/generated/informers/externalversions/k3s.cattle.io/v1/interface.go +++ /dev/null @@ -1,45 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package v1 - -import ( - internalinterfaces "github.com/rancher/k3s/pkg/generated/informers/externalversions/internalinterfaces" -) - -// Interface provides access to all the informers in this group version. -type Interface interface { - // Addons returns a AddonInformer. - Addons() AddonInformer -} - -type version struct { - factory internalinterfaces.SharedInformerFactory - namespace string - tweakListOptions internalinterfaces.TweakListOptionsFunc -} - -// New returns a new Interface. -func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface { - return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions} -} - -// Addons returns a AddonInformer. -func (v *version) Addons() AddonInformer { - return &addonInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} -} diff --git a/pkg/generated/listers/k3s.cattle.io/v1/addon.go b/pkg/generated/listers/k3s.cattle.io/v1/addon.go deleted file mode 100644 index 32031a11ce3d..000000000000 --- a/pkg/generated/listers/k3s.cattle.io/v1/addon.go +++ /dev/null @@ -1,94 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package v1 - -import ( - v1 "github.com/rancher/k3s/pkg/apis/k3s.cattle.io/v1" - "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/client-go/tools/cache" -) - -// AddonLister helps list Addons. -type AddonLister interface { - // List lists all Addons in the indexer. - List(selector labels.Selector) (ret []*v1.Addon, err error) - // Addons returns an object that can list and get Addons. - Addons(namespace string) AddonNamespaceLister - AddonListerExpansion -} - -// addonLister implements the AddonLister interface. -type addonLister struct { - indexer cache.Indexer -} - -// NewAddonLister returns a new AddonLister. -func NewAddonLister(indexer cache.Indexer) AddonLister { - return &addonLister{indexer: indexer} -} - -// List lists all Addons in the indexer. -func (s *addonLister) List(selector labels.Selector) (ret []*v1.Addon, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.Addon)) - }) - return ret, err -} - -// Addons returns an object that can list and get Addons. -func (s *addonLister) Addons(namespace string) AddonNamespaceLister { - return addonNamespaceLister{indexer: s.indexer, namespace: namespace} -} - -// AddonNamespaceLister helps list and get Addons. -type AddonNamespaceLister interface { - // List lists all Addons in the indexer for a given namespace. - List(selector labels.Selector) (ret []*v1.Addon, err error) - // Get retrieves the Addon from the indexer for a given namespace and name. - Get(name string) (*v1.Addon, error) - AddonNamespaceListerExpansion -} - -// addonNamespaceLister implements the AddonNamespaceLister -// interface. -type addonNamespaceLister struct { - indexer cache.Indexer - namespace string -} - -// List lists all Addons in the indexer for a given namespace. -func (s addonNamespaceLister) List(selector labels.Selector) (ret []*v1.Addon, err error) { - err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { - ret = append(ret, m.(*v1.Addon)) - }) - return ret, err -} - -// Get retrieves the Addon from the indexer for a given namespace and name. -func (s addonNamespaceLister) Get(name string) (*v1.Addon, error) { - obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("addon"), name) - } - return obj.(*v1.Addon), nil -} diff --git a/pkg/generated/listers/k3s.cattle.io/v1/expansion_generated.go b/pkg/generated/listers/k3s.cattle.io/v1/expansion_generated.go deleted file mode 100644 index b4881de9efbb..000000000000 --- a/pkg/generated/listers/k3s.cattle.io/v1/expansion_generated.go +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package v1 - -// AddonListerExpansion allows custom methods to be added to -// AddonLister. -type AddonListerExpansion interface{} - -// AddonNamespaceListerExpansion allows custom methods to be added to -// AddonNamespaceLister. -type AddonNamespaceListerExpansion interface{} diff --git a/pkg/node/controller.go b/pkg/node/controller.go index 852cae1dfb3b..355b42644ca3 100644 --- a/pkg/node/controller.go +++ b/pkg/node/controller.go @@ -5,7 +5,7 @@ import ( "strings" "github.com/pkg/errors" - coreclient "github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1" + coreclient "github.com/rancher/wrangler/pkg/generated/controllers/core/v1" "github.com/sirupsen/logrus" core "k8s.io/api/core/v1" ) diff --git a/pkg/rootlessports/controller.go b/pkg/rootlessports/controller.go index cf19715b22a2..d27be96a05fa 100644 --- a/pkg/rootlessports/controller.go +++ b/pkg/rootlessports/controller.go @@ -7,7 +7,7 @@ import ( "time" "github.com/rancher/k3s/pkg/rootless" - coreClients "github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1" + coreClients "github.com/rancher/wrangler/pkg/generated/controllers/core/v1" "github.com/rootless-containers/rootlesskit/pkg/api/client" "github.com/rootless-containers/rootlesskit/pkg/port" "github.com/sirupsen/logrus" diff --git a/pkg/rootlessports/controller_windows.go b/pkg/rootlessports/controller_windows.go index 7b88d2e1e848..56d9982e581a 100644 --- a/pkg/rootlessports/controller_windows.go +++ b/pkg/rootlessports/controller_windows.go @@ -3,7 +3,7 @@ package rootlessports import ( "context" - coreClients "github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1" + coreClients "github.com/rancher/wrangler/pkg/generated/controllers/core/v1" ) func Register(ctx context.Context, serviceController coreClients.ServiceController, enabled bool, httpsPort int) error { diff --git a/pkg/server/context.go b/pkg/server/context.go index a9f1bd575f0c..096f2af0d19c 100644 --- a/pkg/server/context.go +++ b/pkg/server/context.go @@ -5,12 +5,12 @@ import ( "github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io" "github.com/rancher/k3s/pkg/generated/controllers/k3s.cattle.io" - "github.com/rancher/wrangler-api/pkg/generated/controllers/apps" - "github.com/rancher/wrangler-api/pkg/generated/controllers/batch" - "github.com/rancher/wrangler-api/pkg/generated/controllers/core" - "github.com/rancher/wrangler-api/pkg/generated/controllers/rbac" "github.com/rancher/wrangler/pkg/apply" "github.com/rancher/wrangler/pkg/crd" + "github.com/rancher/wrangler/pkg/generated/controllers/apps" + "github.com/rancher/wrangler/pkg/generated/controllers/batch" + "github.com/rancher/wrangler/pkg/generated/controllers/core" + "github.com/rancher/wrangler/pkg/generated/controllers/rbac" "github.com/rancher/wrangler/pkg/start" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" diff --git a/pkg/server/server.go b/pkg/server/server.go index a8f067325de8..71bc5c88264f 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -28,7 +28,7 @@ import ( "github.com/rancher/k3s/pkg/static" "github.com/rancher/k3s/pkg/util" "github.com/rancher/k3s/pkg/version" - v1 "github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1" + v1 "github.com/rancher/wrangler/pkg/generated/controllers/core/v1" "github.com/rancher/wrangler/pkg/leader" "github.com/rancher/wrangler/pkg/resolvehome" "github.com/sirupsen/logrus" diff --git a/pkg/servicelb/controller.go b/pkg/servicelb/controller.go index 0bad0c04dfc4..c7f3a6907ec2 100644 --- a/pkg/servicelb/controller.go +++ b/pkg/servicelb/controller.go @@ -7,10 +7,10 @@ import ( "strconv" "github.com/rancher/k3s/pkg/version" - appclient "github.com/rancher/wrangler-api/pkg/generated/controllers/apps/v1" - coreclient "github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1" "github.com/rancher/wrangler/pkg/apply" "github.com/rancher/wrangler/pkg/condition" + appclient "github.com/rancher/wrangler/pkg/generated/controllers/apps/v1" + coreclient "github.com/rancher/wrangler/pkg/generated/controllers/core/v1" "github.com/rancher/wrangler/pkg/objectset" "github.com/rancher/wrangler/pkg/relatedresource" "github.com/rancher/wrangler/pkg/slice" diff --git a/vendor/github.com/coreos/pkg/capnslog/init.go b/vendor/github.com/coreos/pkg/capnslog/init.go index 44b8cd361b0f..38ce6d261844 100644 --- a/vendor/github.com/coreos/pkg/capnslog/init.go +++ b/vendor/github.com/coreos/pkg/capnslog/init.go @@ -32,7 +32,7 @@ import ( func init() { initHijack() - // Go `log` pacakge uses os.Stderr. + // Go `log` package uses os.Stderr. SetFormatter(NewDefaultFormatter(os.Stderr)) SetGlobalLogLevel(INFO) } diff --git a/vendor/github.com/go-openapi/spec/.golangci.yml b/vendor/github.com/go-openapi/spec/.golangci.yml index 3e33f9f2e3ec..4e17ed4979b4 100644 --- a/vendor/github.com/go-openapi/spec/.golangci.yml +++ b/vendor/github.com/go-openapi/spec/.golangci.yml @@ -21,3 +21,8 @@ linters: - lll - gochecknoinits - gochecknoglobals + - funlen + - godox + - gocognit + - whitespace + - wsl diff --git a/vendor/github.com/go-openapi/spec/bindata.go b/vendor/github.com/go-openapi/spec/bindata.go index c67e2d877b01..66b1f32635d6 100644 --- a/vendor/github.com/go-openapi/spec/bindata.go +++ b/vendor/github.com/go-openapi/spec/bindata.go @@ -1,7 +1,7 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: // schemas/jsonschema-draft-04.json (4.357kB) -// schemas/v2/schema.json (40.249kB) +// schemas/v2/schema.json (40.248kB) package spec @@ -70,43 +70,43 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _jsonschemaDraft04JSON = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x57\x3d\x6f\xdb\x3c\x10\xde\xf3\x2b\x08\x26\x63\xf2\x2a\x2f\xd0\xc9\x5b\xd1\x2e\x01\x5a\x34\x43\x37\x23\x03\x6d\x9d\x6c\x06\x14\xa9\x50\x54\x60\xc3\xd0\x7f\x2f\x28\x4a\x14\x29\x91\x92\x2d\xa7\x8d\x97\x28\xbc\xaf\xe7\x8e\xf7\xc5\xd3\x0d\x42\x08\x61\x9a\xe2\x15\xc2\x7b\xa5\x8a\x55\x92\xbc\x96\x82\x3f\x94\xdb\x3d\xe4\xe4\x3f\x21\x77\x49\x2a\x49\xa6\x1e\x1e\xbf\x24\xe6\xec\x16\xdf\x1b\xa1\x3b\xf3\xff\x02\xc9\x14\xca\xad\xa4\x85\xa2\x82\x6b\xe9\x6f\x42\x02\x32\x2c\x28\x07\x45\x5a\x15\x3d\x77\x46\x39\xd5\xcc\x25\x5e\x21\x83\xb8\x21\x18\xb6\xaf\x52\x92\xa3\x47\x68\x88\xea\x58\x80\x56\x4e\x1a\xf2\xbd\x4f\xcc\x29\x7f\x52\x90\x6b\x7d\xff\x0f\x48\xb4\x3d\x3f\x21\x7c\x27\x21\xd3\x2a\x6e\x31\xaa\x2d\x53\xdd\xf3\xe3\x42\x94\x54\xd1\x77\x78\xe2\x0a\x76\x20\xe3\x20\x68\xcb\x30\x86\x41\xf3\x2a\xc7\x2b\xf4\x78\x8e\xfe\xef\x90\x91\x8a\xa9\xc7\xb1\x1d\xc2\xd8\x2f\x0d\x75\xed\xc1\x4e\x9c\xc8\x25\x43\xac\xa8\xbe\xd7\xcc\xa9\xd1\xa9\x21\xa0\x1a\xbd\x04\x61\x94\x34\x2f\x18\xfc\x3e\x16\x50\x8e\x4d\x03\x6f\x1c\x58\xdb\x48\x23\xbc\x11\x82\x01\xe1\xfa\xd3\x3a\x8e\x30\xaf\x18\x33\x7f\xf3\x8d\x39\x11\x9b\x57\xd8\x2a\xfd\x55\x2a\x49\xf9\x0e\xc7\xec\x37\xd4\x25\xf7\xec\x5c\x66\xc7\xd7\x99\xaa\xcf\x4f\x89\x8a\xd3\xb7\x0a\x3a\xaa\x92\x15\xf4\x30\x6f\x1c\xb0\xd6\x46\xe7\x98\x39\x2d\xa4\x28\x40\x2a\x3a\x88\x9e\x29\xba\x88\x37\x2d\xca\x60\x38\xfa\xba\x5b\x20\xac\xa8\x62\xb0\x4c\xd4\xaf\xda\x45\x0a\xba\x5c\x3b\xb9\xc7\x79\xc5\x14\x2d\x18\x34\x19\x1c\x51\xdb\x25\x4d\xb4\x7e\x06\x14\x38\x6c\x59\x55\xd2\x77\xf8\x69\x59\xfc\x7b\x73\xed\x93\x43\xcb\x32\x6d\x3c\x28\xdc\x1b\x9a\xd3\x62\xab\xc2\x27\xf7\x41\xc9\x08\x2b\x23\x08\xad\x13\x57\x21\x9c\xd3\x72\x0d\x42\x72\xf8\x01\x7c\xa7\xf6\x83\xce\x39\xd7\x82\x3c\x1f\x2f\xd6\x60\x1b\xa2\xdf\x35\x89\x52\x20\xe7\x73\x74\xe0\x66\x26\x64\x4e\xb4\x97\x58\xc2\x0e\x0e\xe1\x60\x92\x34\x6d\xa0\x10\xd6\xb5\x83\x61\x27\xe6\x47\xd3\x89\xbd\x63\xfd\x3b\x8d\x03\x3d\x6c\x42\x2d\x5b\x70\xee\xe8\xdf\x4b\xf4\x66\x4e\xe1\x01\x45\x17\x80\x74\xad\x4f\xc3\xf3\xae\xc6\x1d\xc6\xd7\xc2\xce\xc9\xe1\x29\x30\x86\x2f\x4a\xa6\x4b\x15\x84\x73\xc9\x6f\xfd\x7f\xa5\x6e\x9e\xbd\xf1\xb0\xd4\xdd\x45\x5a\xc2\x3e\x4b\x78\xab\xa8\x84\x74\x4a\x91\x3b\x92\x23\x05\xf2\x1c\x1e\x7b\xf3\x09\xf8\xcf\xab\x24\xb6\x60\xa2\xe8\x4c\x9f\x75\x77\xaa\x8c\xe6\x01\x45\x36\x86\xcf\xc3\x63\x3a\xea\xd4\x8d\x7e\x06\xac\x14\x0a\xe0\x29\xf0\xed\x07\x22\x1a\x65\xda\x44\xae\xa2\x73\x1a\xe6\x90\x69\xa2\x8c\x46\xb2\x2f\xde\x49\x38\x08\xed\xfe\xfd\x41\xaf\x9f\xa9\x55\xd7\xdd\x22\x8d\xfa\x45\x63\xc5\x0f\x80\xf3\xb4\x08\xd6\x79\x30\x9e\x93\xee\x59\xa6\xd0\x4b\xee\x22\xe3\x33\xc1\x3a\x27\x68\x36\x78\x7e\x87\x0a\x06\xd5\x2e\x20\xd3\xaf\x15\xfb\xd8\x3b\x73\x14\xbb\x92\xed\x05\x5d\x2e\x29\x38\x2c\x94\xe4\x42\x45\x5e\xd3\xb5\x7d\xdf\x47\xca\x38\xb4\x5c\xaf\xfb\x7d\xdd\x6d\xf4\xa1\x2d\x77\xdd\x2f\xce\x6d\xc4\x7b\x8b\x4e\x67\xa9\x6f\xfe\x04\x00\x00\xff\xff\xb1\xd1\x27\x78\x05\x11\x00\x00") +var _jsonschemaDraft04Json = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x57\x3d\x6f\xdb\x3c\x10\xde\xf3\x2b\x08\x26\x63\xf2\x2a\x2f\xd0\xc9\x5b\xd1\x2e\x01\x5a\x34\x43\x37\x23\x03\x6d\x9d\x6c\x06\x14\xa9\x50\x54\x60\xc3\xd0\x7f\x2f\x28\x4a\x14\x29\x91\x92\x2d\xa7\x8d\x97\x28\xbc\xaf\xe7\x8e\xf7\xc5\xd3\x0d\x42\x08\x61\x9a\xe2\x15\xc2\x7b\xa5\x8a\x55\x92\xbc\x96\x82\x3f\x94\xdb\x3d\xe4\xe4\x3f\x21\x77\x49\x2a\x49\xa6\x1e\x1e\xbf\x24\xe6\xec\x16\xdf\x1b\xa1\x3b\xf3\xff\x02\xc9\x14\xca\xad\xa4\x85\xa2\x82\x6b\xe9\x6f\x42\x02\x32\x2c\x28\x07\x45\x5a\x15\x3d\x77\x46\x39\xd5\xcc\x25\x5e\x21\x83\xb8\x21\x18\xb6\xaf\x52\x92\xa3\x47\x68\x88\xea\x58\x80\x56\x4e\x1a\xf2\xbd\x4f\xcc\x29\x7f\x52\x90\x6b\x7d\xff\x0f\x48\xb4\x3d\x3f\x21\x7c\x27\x21\xd3\x2a\x6e\x31\xaa\x2d\x53\xdd\xf3\xe3\x42\x94\x54\xd1\x77\x78\xe2\x0a\x76\x20\xe3\x20\x68\xcb\x30\x86\x41\xf3\x2a\xc7\x2b\xf4\x78\x8e\xfe\xef\x90\x91\x8a\xa9\xc7\xb1\x1d\xc2\xd8\x2f\x0d\x75\xed\xc1\x4e\x9c\xc8\x25\x43\xac\xa8\xbe\xd7\xcc\xa9\xd1\xa9\x21\xa0\x1a\xbd\x04\x61\x94\x34\x2f\x18\xfc\x3e\x16\x50\x8e\x4d\x03\x6f\x1c\x58\xdb\x48\x23\xbc\x11\x82\x01\xe1\xfa\xd3\x3a\x8e\x30\xaf\x18\x33\x7f\xf3\x8d\x39\x11\x9b\x57\xd8\x2a\xfd\x55\x2a\x49\xf9\x0e\xc7\xec\x37\xd4\x25\xf7\xec\x5c\x66\xc7\xd7\x99\xaa\xcf\x4f\x89\x8a\xd3\xb7\x0a\x3a\xaa\x92\x15\xf4\x30\x6f\x1c\xb0\xd6\x46\xe7\x98\x39\x2d\xa4\x28\x40\x2a\x3a\x88\x9e\x29\xba\x88\x37\x2d\xca\x60\x38\xfa\xba\x5b\x20\xac\xa8\x62\xb0\x4c\xd4\xaf\xda\x45\x0a\xba\x5c\x3b\xb9\xc7\x79\xc5\x14\x2d\x18\x34\x19\x1c\x51\xdb\x25\x4d\xb4\x7e\x06\x14\x38\x6c\x59\x55\xd2\x77\xf8\x69\x59\xfc\x7b\x73\xed\x93\x43\xcb\x32\x6d\x3c\x28\xdc\x1b\x9a\xd3\x62\xab\xc2\x27\xf7\x41\xc9\x08\x2b\x23\x08\xad\x13\x57\x21\x9c\xd3\x72\x0d\x42\x72\xf8\x01\x7c\xa7\xf6\x83\xce\x39\xd7\x82\x3c\x1f\x2f\xd6\x60\x1b\xa2\xdf\x35\x89\x52\x20\xe7\x73\x74\xe0\x66\x26\x64\x4e\xb4\x97\x58\xc2\x0e\x0e\xe1\x60\x92\x34\x6d\xa0\x10\xd6\xb5\x83\x61\x27\xe6\x47\xd3\x89\xbd\x63\xfd\x3b\x8d\x03\x3d\x6c\x42\x2d\x5b\x70\xee\xe8\xdf\x4b\xf4\x66\x4e\xe1\x01\x45\x17\x80\x74\xad\x4f\xc3\xf3\xae\xc6\x1d\xc6\xd7\xc2\xce\xc9\xe1\x29\x30\x86\x2f\x4a\xa6\x4b\x15\x84\x73\xc9\x6f\xfd\x7f\xa5\x6e\x9e\xbd\xf1\xb0\xd4\xdd\x45\x5a\xc2\x3e\x4b\x78\xab\xa8\x84\x74\x4a\x91\x3b\x92\x23\x05\xf2\x1c\x1e\x7b\xf3\x09\xf8\xcf\xab\x24\xb6\x60\xa2\xe8\x4c\x9f\x75\x77\xaa\x8c\xe6\x01\x45\x36\x86\xcf\xc3\x63\x3a\xea\xd4\x8d\x7e\x06\xac\x14\x0a\xe0\x29\xf0\xed\x07\x22\x1a\x65\xda\x44\xae\xa2\x73\x1a\xe6\x90\x69\xa2\x8c\x46\xb2\x2f\xde\x49\x38\x08\xed\xfe\xfd\x41\xaf\x9f\xa9\x55\xd7\xdd\x22\x8d\xfa\x45\x63\xc5\x0f\x80\xf3\xb4\x08\xd6\x79\x30\x9e\x93\xee\x59\xa6\xd0\x4b\xee\x22\xe3\x33\xc1\x3a\x27\x68\x36\x78\x7e\x87\x0a\x06\xd5\x2e\x20\xd3\xaf\x15\xfb\xd8\x3b\x73\x14\xbb\x92\xed\x05\x5d\x2e\x29\x38\x2c\x94\xe4\x42\x45\x5e\xd3\xb5\x7d\xdf\x47\xca\x38\xb4\x5c\xaf\xfb\x7d\xdd\x6d\xf4\xa1\x2d\x77\xdd\x2f\xce\x6d\xc4\x7b\x8b\x4e\x67\xa9\x6f\xfe\x04\x00\x00\xff\xff\xb1\xd1\x27\x78\x05\x11\x00\x00") -func jsonschemaDraft04JSONBytes() ([]byte, error) { +func jsonschemaDraft04JsonBytes() ([]byte, error) { return bindataRead( - _jsonschemaDraft04JSON, + _jsonschemaDraft04Json, "jsonschema-draft-04.json", ) } -func jsonschemaDraft04JSON() (*asset, error) { - bytes, err := jsonschemaDraft04JSONBytes() +func jsonschemaDraft04Json() (*asset, error) { + bytes, err := jsonschemaDraft04JsonBytes() if err != nil { return nil, err } - info := bindataFileInfo{name: "jsonschema-draft-04.json", size: 4357, mode: os.FileMode(0644), modTime: time.Unix(1567900649, 0)} + info := bindataFileInfo{name: "jsonschema-draft-04.json", size: 4357, mode: os.FileMode(0640), modTime: time.Unix(1568963823, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe1, 0x48, 0x9d, 0xb, 0x47, 0x55, 0xf0, 0x27, 0x93, 0x30, 0x25, 0x91, 0xd3, 0xfc, 0xb8, 0xf0, 0x7b, 0x68, 0x93, 0xa8, 0x2a, 0x94, 0xf2, 0x48, 0x95, 0xf8, 0xe4, 0xed, 0xf1, 0x1b, 0x82, 0xe2}} return a, nil } -var _v2SchemaJSON = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5d\x4f\x93\xdb\x36\xb2\xbf\xfb\x53\xa0\x14\x57\xd9\xae\xd8\x92\xe3\xf7\x2e\xcf\x97\xd4\xbc\xd8\x49\x66\x37\x5e\x4f\x79\x26\xbb\x87\x78\x5c\x05\x91\x2d\x09\x09\x09\x30\x00\x38\x33\x5a\xef\x7c\xf7\x2d\xf0\x9f\x08\x02\x20\x41\x8a\xd2\xc8\x0e\x0f\xa9\x78\x28\xa0\xd1\xdd\x68\x34\x7e\xdd\xf8\xf7\xf9\x11\x42\x33\x49\x64\x04\xb3\xd7\x68\x76\x86\xfe\x76\xf9\xfe\x1f\xe8\x32\xd8\x40\x8c\xd1\x8a\x71\x74\x79\x8b\xd7\x6b\xe0\xe8\xd5\xfc\x25\x3a\xbb\x38\x9f\xcf\x9e\xab\x0a\x24\x54\xa5\x37\x52\x26\xaf\x17\x0b\x91\x17\x99\x13\xb6\xb8\x79\xb5\x10\x59\xdd\xf9\xef\x82\xd1\x6f\xf2\xc2\x8f\xf3\x4f\xb5\x1a\xea\xc7\x17\x45\x41\xc6\xd7\x8b\x90\xe3\x95\x7c\xf1\xf2\x7f\x8b\xca\x45\x3d\xb9\x4d\x32\xa6\xd8\xf2\x77\x08\x64\xfe\x8d\xc3\x9f\x29\xe1\xa0\x9a\xff\xed\x11\x42\x08\xcd\x8a\xd6\xb3\x9f\x15\x67\x74\xc5\xca\x7f\x27\x58\x6e\xc4\xec\x11\x42\xd7\x59\x5d\x1c\x86\x44\x12\x46\x71\x74\xc1\x59\x02\x5c\x12\x10\xb3\xd7\x68\x85\x23\x01\x59\x81\x04\x4b\x09\x9c\x6a\xbf\x7e\xce\x49\x7d\xba\x7b\x51\xfd\xa1\x44\xe2\xb0\x52\xac\x7d\xb3\x08\x61\x45\x68\x46\x56\x2c\x6e\x80\x86\x8c\xbf\xbd\x93\x40\x05\x61\x74\x96\x95\xbe\x7f\x84\xd0\x7d\x4e\xde\x42\xb7\xe4\xbe\x46\xbb\x14\x5b\x48\x4e\xe8\xba\x90\x05\xa1\x19\xd0\x34\xae\xc4\xce\xbe\xbc\x9a\xbf\x9c\x15\x7f\x5d\x57\xc5\x42\x10\x01\x27\x89\xe2\x48\x51\xb9\xda\x40\xd5\x87\x37\xc0\x15\x5f\x88\xad\x90\xdc\x10\x81\x42\x16\xa4\x31\x50\x39\x2f\x38\xad\xab\xb0\x53\xd8\xac\x94\x56\x6f\xc3\x84\xf4\x11\xa4\x50\xb3\xfa\xe9\xd3\x6f\x9f\x3e\xdf\x2f\xd0\xeb\x8f\x1f\x3f\x7e\xbc\xfe\xf6\xe9\xf7\xaf\x5f\x7f\xfc\x18\x7e\xfb\xec\xfb\xc7\xb3\x36\x79\x54\x43\xe8\x29\xc5\x31\x20\xc6\x11\x49\x9e\xe5\x12\x41\x66\xa0\xe8\xed\x1d\x8e\x93\x08\x5e\xa3\x27\x3b\xc3\x7c\xa2\x73\xba\xc4\x02\x2e\xb0\xdc\xf4\xe5\x76\xd1\xca\x96\xa2\x8a\x94\xcd\x21\xc9\x6c\xec\x2c\x70\x42\x9e\x34\x74\x9d\x19\x7c\xcd\x20\x9c\xea\x2e\x0a\xfe\x42\x84\xd4\x29\x04\x8c\x8a\xb4\x41\xa2\xc1\xdc\x19\x8a\x88\x90\x4a\x49\xef\xce\xdf\xbd\x45\x4a\x52\x81\x70\x10\x40\x22\x21\x44\xcb\x6d\xc5\xec\x4e\x3c\x1c\x45\xef\x57\x9a\xb5\x7d\xae\xfe\xe5\xe4\x31\x86\x90\xe0\xab\x6d\x02\x3b\x2e\xcb\x11\x90\xd9\xa8\xc6\x77\xc2\x59\x98\x06\xfd\xf9\x2e\x78\x45\x01\xa6\xa8\xa0\x71\x5c\xbe\x33\xa7\xd2\xd9\x5f\x95\xef\xd9\xd5\xac\xfd\xdc\x5d\xbf\x5e\xb8\xd1\x3e\xc7\x31\x48\xe0\x5e\x4c\x14\x65\xdf\xb8\xa8\x71\x10\x09\xa3\xc2\xc7\x02\xcb\xa2\x4e\x5a\x02\x82\x94\x13\xb9\xf5\x30\xe6\xb2\xa4\xb5\xfe\x9b\x3e\x7a\xb2\x55\xd2\xa8\x4a\xbc\x16\xb6\x71\x8e\x39\xc7\xdb\x9d\xe1\x10\x09\x71\xbd\x9c\xb3\x41\x89\xd7\xa5\x89\xdc\x57\xb5\x53\x4a\xfe\x4c\xe1\xbc\xa0\x21\x79\x0a\x1a\x0f\x70\xa7\x5c\x08\x8e\xde\xb0\xc0\x43\x24\xad\x74\x63\x0e\xb1\xd9\x90\xe1\xb0\x2d\x13\xa7\x6d\x78\xfd\x04\x14\x38\x8e\x90\xaa\xce\x63\xac\x3e\x23\xbc\x64\xa9\xb4\xf8\x03\x63\xde\xcd\xbe\x16\x13\x4a\x55\xac\x82\x12\xc6\xac\xd4\x35\xf7\x22\xd4\x3a\xff\x22\x73\x0e\x6e\x51\xa0\x75\x1e\xae\x8f\xe8\x5d\xc7\x59\xe6\xe4\x9a\x18\x8d\xd6\x1c\x53\x84\x4d\xb7\x67\x28\x37\x09\x84\x69\x88\x12\x0e\x01\x11\x80\x32\xa2\xf5\xb9\xaa\xc6\xd9\x73\x53\xab\xfb\xb4\x2e\x20\xc6\x54\x92\xa0\x9a\xf3\x69\x1a\x2f\x81\x77\x37\xae\x53\x1a\xce\x40\xc4\xa8\x82\x1c\xb5\xef\xda\x24\x7d\xb9\x61\x69\x14\xa2\x25\xa0\x90\xac\x56\xc0\x81\x4a\xb4\xe2\x2c\xce\x4a\x64\x7a\x9a\x23\xf4\x13\x91\x3f\xa7\x4b\xf4\x63\x84\x6f\x18\x87\x10\xbd\xc3\xfc\x8f\x90\xdd\x52\x44\x04\xc2\x51\xc4\x6e\x21\x74\x48\x21\x81\xc7\xe2\xfd\xea\x12\xf8\x0d\x09\xf6\xe9\x47\x35\xaf\x67\xc4\x14\xf7\x22\x27\x97\xe1\xe2\x76\x2d\x06\x8c\x4a\x1c\x48\x3f\x73\x2d\x0b\x5b\x29\x45\x24\x00\x2a\x0c\x11\xec\x94\xca\xc2\xa6\xc1\x37\x21\x43\x83\x3b\x5f\x97\xf1\x43\x5e\x53\x73\x19\xa5\x36\xd8\x2d\x05\x2e\x34\x0b\xeb\x39\xfc\x1d\x63\x51\x01\xbd\x3d\xbb\x90\x84\x40\x25\x59\x6d\x09\x5d\xa3\x1c\x37\xe6\x5c\x16\x9a\x40\x09\x70\xc1\xe8\x82\xf1\x35\xa6\xe4\xdf\x99\x5c\x8e\x9e\x4d\x79\xb4\x27\x2f\xbf\x7e\xf8\x05\x25\x8c\x50\xa9\x98\x29\x90\x62\x60\xea\x75\xae\x13\xca\xbf\x2b\x1a\x29\x27\x76\xd6\x20\xc6\x64\x5f\xe6\x32\x1a\x08\x87\x21\x07\x21\xbc\xb4\xe4\xe0\x32\x67\xa6\xcd\xf3\x1e\xcd\xd9\x6b\xb6\x6f\x8e\x27\xa7\xed\xdb\xe7\xbc\xcc\x1a\x07\xce\x6f\x87\x33\xf0\xba\x51\x17\x22\x66\x78\x79\x8e\xce\xe5\x13\x81\x80\x06\x2c\xe5\x78\x0d\xa1\xb2\xb8\x54\xa8\x79\x09\xbd\xbf\x3c\x47\x01\x8b\x13\x2c\xc9\x32\xaa\xaa\x1d\xd5\xee\xab\x36\xbd\x6c\xfd\x54\x6c\xc8\x08\x01\x3c\xbd\xe7\x07\x88\xb0\x24\x37\x79\x90\x28\x4a\x1d\x10\x1a\x92\x1b\x12\xa6\x38\x42\x40\xc3\x4c\x43\x62\x8e\xae\x36\xb0\x45\x71\x2a\xa4\x9a\x23\x79\x59\xb1\xa8\xf2\xa4\x0c\x60\x9f\xcc\x8d\x40\xf5\x80\xca\xa8\x99\xc3\xa7\x85\x1f\x31\x25\xa9\x82\xc5\x6d\xbd\xd8\x36\x76\x7c\x02\x28\x97\xf6\x1d\x74\x3b\x11\x7e\x91\xae\x32\xf8\x6c\xf4\xe6\x7b\x9a\xa5\x1f\x62\xc6\x21\xcf\x9a\xe5\xed\x8b\x02\xf3\x2c\x33\x33\xdf\x00\xca\xc9\x09\xb4\x04\xf5\xa5\x08\xd7\xc3\x02\x18\x66\xf1\xab\x1e\x83\x37\x4c\xcd\x12\xc1\x1d\x50\xf6\xaa\xbd\xfe\xe2\x73\x48\x38\x08\xa0\x32\x9b\x18\x44\x86\x0b\x6a\xc1\xaa\x26\x96\x2d\x96\x3c\xa0\x54\x65\x73\x87\x15\xca\x15\xe5\xf5\x94\x46\x9f\x33\x1a\x0c\x9a\xb1\x5a\xd9\x6a\x95\xcd\xcb\x7e\xec\x9a\xc5\x94\x3b\x37\x26\x31\xd7\xfc\xe4\x1f\x13\x8c\x31\x75\x9c\xba\xf7\x87\x3c\xa1\xb7\x4f\x17\x1b\x09\x82\x98\xc4\x70\x95\xd3\xe8\x4c\x48\x5a\xa6\xd6\x2a\x3d\x56\x42\x80\x9f\xaf\xae\x2e\x50\x0c\x42\xe0\x35\x34\x3c\x8a\x62\x03\x37\xba\xb2\x27\x04\xda\x25\x8d\x06\xe2\xa0\x13\x8a\xf3\xf5\xec\x10\x72\x67\x88\x90\x3d\x4b\x64\xeb\xaa\xda\x8f\xf7\x5a\x75\x47\x9a\xa8\x51\x70\x26\xd2\x38\xc6\x7c\xbb\x57\xfc\xbd\xe4\x04\x56\xa8\xa0\x54\x9a\x45\xd5\xf7\x0f\x16\xfc\x57\x1c\x3c\xdf\x23\xba\x77\x38\xda\x16\x4b\x31\x53\x6a\x4d\x9a\x15\x63\xe7\xe1\x18\x69\x9f\x22\xe0\x24\xbb\x94\x4b\x97\xee\x2d\xf9\x70\x87\x72\x7b\xe6\xc4\x33\x2a\x66\x5e\x1c\x35\x72\xe3\x2d\xda\x73\xe4\xc7\x51\x6d\xa4\xa1\x2a\x4f\xde\x94\xcb\xb2\x3e\x31\x48\xae\x82\xce\xc9\xc8\x65\xcd\xc3\xb7\x34\xb6\x2b\xdf\x58\x65\x78\x6e\x73\xac\x5e\x24\x0d\x3f\xdc\x70\x23\xc6\xda\x52\x0b\x2d\x63\x7d\xa9\x49\x2d\x54\x48\x28\xc0\x12\x9c\xe3\x63\xc9\x58\x04\x98\x36\x07\xc8\x0a\xa7\x91\xd4\xf0\xbc\xc1\xa8\xb9\x70\xd0\xc6\xa9\xb6\x78\x80\x5a\xa3\xb4\x2c\xf4\x18\x0b\x8a\x9d\xd0\xb4\x55\x10\xee\x0d\xc5\xd6\xe0\x99\x93\xdc\xa1\x04\xbb\xf1\xa7\x23\xd1\xd1\x97\x8c\x87\x13\x0a\x21\x02\xe9\x99\x25\xed\x20\xc5\x92\x66\x3c\x32\x9c\xd6\x06\xb0\x31\x5c\x86\x29\x0a\xcb\x60\x33\x12\xa5\x91\xfc\x96\x75\xd0\x59\xd7\x13\xbd\xd3\x23\x79\xdd\x2a\x90\xa6\x38\x06\x91\x39\x7f\x20\x72\x03\x1c\x2d\x01\x61\xba\x45\x37\x38\x22\x61\x8e\x71\x85\xc4\x32\x15\x28\x60\x61\x16\xb8\x3d\x29\xdc\x4d\x3d\x2f\x12\x13\x7d\xc8\x7e\x37\xee\xa8\x7f\xfa\xdb\xcb\x17\xff\x77\xfd\xf9\x7f\xee\x9f\x3d\xfe\xcf\xa7\xa7\x45\xfb\xcf\x1e\xf7\xf3\xe0\xff\xc4\x51\x0a\x8e\x4c\xcb\x01\xdc\x0a\x65\xb2\x01\x83\xed\x3d\xe4\xa9\xa3\x4e\x2d\x59\xc5\xe8\x2f\x48\x7d\x5a\x6e\x37\xbf\x5c\x9f\x35\x13\x64\x14\xfa\xef\x0b\x68\xa6\x0d\xb4\x8e\xf1\xa8\xff\xbb\x60\xf4\x03\x64\xab\x5b\x81\x65\x51\xe6\xda\xca\xfa\xf0\xb0\xac\x3e\x9c\xca\x26\x0e\x1d\xdb\x57\x5b\xbb\xb4\x9a\xa6\xb6\x9b\x1a\x6b\xd1\x9a\x9e\x7e\x33\x9a\xec\x41\x69\x45\x22\xb8\xb4\x51\xeb\x04\x77\xca\x6f\x7b\x7b\xc8\xb2\xb0\x95\x92\x25\x5b\xd0\x42\xaa\x2a\xdd\x32\x78\x4f\x0c\xab\x68\x46\x6c\xea\x6d\xf4\x5c\x5e\xde\xc4\xac\xa5\xf9\xd1\x00\x9f\x7d\x98\x65\x24\xbd\xc7\x97\xd4\xb3\x3a\xa8\x2b\xa0\x34\x76\xf9\x65\x5f\x2d\x25\x95\x1b\xcf\xd6\xf4\x9b\x5f\x09\x95\xb0\x36\x3f\xdb\xd0\x39\x2a\x93\x1c\x9d\x03\xa2\x4a\xca\xf5\xf6\x10\xb6\x94\x89\x0b\x6a\x70\x12\x13\x49\x6e\x40\xe4\x29\x12\x2b\xbd\x80\x45\x11\x04\xaa\xc2\x8f\x56\x9e\x5c\x6b\xec\x8d\x5a\x0e\x14\x59\x06\x2b\x1e\x24\xcb\xc2\x56\x4a\x31\xbe\x23\x71\x1a\xfb\x51\x2a\x0b\x3b\x1c\x48\x10\xa5\x82\xdc\xc0\xbb\x3e\x24\x8d\x5a\x76\x2e\x09\xed\xc1\x65\x51\xb8\x83\xcb\x3e\x24\x8d\x5a\x2e\x5d\xfe\x02\x74\x2d\x3d\xf1\xef\xae\xb8\x4b\xe6\x5e\xd4\xaa\xe2\x2e\x5c\x5e\xec\x0e\xf5\x5b\x0c\xcb\x0a\xbb\xa4\x3c\xf7\x1f\x2a\x55\x69\x97\x8c\x7d\x68\x95\xa5\xad\xb4\xf4\x9c\xa5\x07\xb9\x7a\x05\xbb\xad\x50\x6f\xfb\xa0\x4e\x9b\x48\x23\x49\x92\x28\x87\x19\x3e\x32\xee\xca\x3b\x46\x7e\x7f\x18\x64\xcc\xcc\x0f\x34\xe9\x36\x8b\xb7\x6c\xa8\xa5\x5b\x54\x4c\x54\x5b\x15\x3a\xf1\x6c\x2d\xfe\x96\xc8\x0d\xba\x7b\x81\x88\xc8\x23\xab\xee\x7d\x3b\x92\xa7\x60\x29\xe3\xdc\xff\xb8\x64\xe1\xf6\xa2\x5a\x59\xdc\x6f\xeb\x45\x7d\x6a\xd1\x76\x1e\xea\xb8\xf1\xfa\x14\xd3\x36\x63\xe5\xd7\xf3\xe4\xbe\x25\xbd\x5e\x05\xeb\x73\x74\xb5\x21\x2a\x2e\x4e\xa3\x30\xdf\xbf\x43\x28\x2a\xd1\xa5\x2a\x9d\x8a\xfd\x76\xd8\x8d\xbc\x67\x65\xc7\xb8\x03\x45\xec\xa3\xb0\x37\x8a\x70\x4c\x68\x91\x51\x8e\x58\x80\xed\x4a\xf3\x81\x62\xca\x96\xbb\xf1\x52\xcd\x80\xfb\xe4\x4a\x5d\x6c\xdf\x6e\x20\x4b\x80\x30\x8e\x28\x93\xf9\xe9\x8d\x8a\x6d\xd5\x59\x65\x7b\xaa\x44\x9e\xc0\xc2\xd1\x7c\x40\x26\xd6\x1a\xce\xf9\xc5\x69\x7b\x6c\xec\xc8\x71\x7b\xe5\x21\x2e\xd3\xe5\x65\x93\x91\x53\x0b\x7b\x3a\xc7\xfa\x17\x6a\x01\xa7\x33\xd0\xf4\x40\x0f\x39\x87\xda\xe4\x54\x87\x3a\xd5\xe3\xc7\xa6\x8e\x20\xd4\x11\xb2\x4e\xb1\xe9\x14\x9b\x4e\xb1\xe9\x14\x9b\xfe\x15\x63\xd3\x47\xf5\xff\x97\x38\xe9\xcf\x14\xf8\x76\x82\x49\x13\x4c\xaa\x7d\xcd\x6c\x62\x42\x49\x87\x43\x49\x19\x33\x6f\xe3\x44\x6e\x9b\xab\x8a\x3e\x86\xaa\x99\x52\x1b\x5b\x59\x33\x02\x09\xa0\x21\xa1\x6b\x84\x6b\x66\xbb\xdc\x16\x0c\xd3\x68\xab\xec\x36\x4b\xd8\x60\x8a\x40\x31\x85\x6e\x14\x57\x13\xc2\xfb\x92\x10\xde\xbf\x88\xdc\xbc\x53\x5e\x7f\x82\x7a\x13\xd4\x9b\xa0\xde\x04\xf5\x90\x01\xf5\x94\xcb\x7b\x83\x25\x9e\xd0\xde\x84\xf6\x6a\x5f\x4b\xb3\x98\x00\xdf\x04\xf8\x6c\xbc\x7f\x19\x80\xaf\xf1\x71\x45\x22\x98\x40\xe0\x04\x02\x27\x10\xd8\x29\xf5\x04\x02\xff\x4a\x20\x30\xc1\x72\xf3\x65\x02\x40\xd7\xc1\xd1\xe2\x6b\xf1\xa9\x7b\xfb\xe4\x20\xc0\x68\x9d\xd4\xb4\xd3\x96\xb5\xa6\xd1\x41\x20\xe6\x89\xc3\x48\x65\x58\x13\x84\x9c\x56\x56\x3b\x0c\xe0\x6b\x83\x5c\x13\xd2\x9a\x90\xd6\x84\xb4\x26\xa4\x85\x0c\xa4\x45\x19\xfd\xff\x63\x6c\x52\xb5\x1f\x1e\x19\x74\x3a\xcd\xb9\x69\xce\xa6\x3a\x0f\x7a\x2d\x19\xc7\x81\x14\x5d\xcb\xd5\x03\xc9\x39\xd0\xb0\xd1\xb3\xcd\xfb\x7a\x2d\x5d\x3a\x48\xe1\xfa\x2e\xe6\x81\x42\x18\x86\xd6\xc1\xbe\xb1\x23\xd3\xf7\x34\xed\x19\x0a\x0b\xc4\x48\x44\xfd\x22\x50\xb6\x42\x58\xbb\xe5\x3d\xa7\x73\xd4\x8b\xc4\x8c\x70\x61\xec\x73\xee\xc3\x81\x8b\xf5\xe2\xd7\x52\x3e\xcf\xeb\xeb\x17\x3b\x71\x16\xda\x7d\xb8\xde\xf0\x7a\x8f\x06\x2d\xa7\x40\x7b\xc1\x9d\x41\x4d\xb6\x61\xa2\x4e\x9f\x3d\xa0\xc5\xae\xe3\x1c\x1d\x40\x6c\x48\x8b\x63\xa0\xb5\x01\xed\x8e\x02\xe9\x86\xc8\x3b\x06\xee\xdb\x4b\xde\xbd\xc0\xa1\x6f\xcb\xda\xfc\xc2\x44\x16\x87\x9c\x17\x31\xd3\x30\x20\x39\x42\xcb\x6f\xf2\xf1\xf4\x72\x10\xf8\x1c\xa0\xf3\xbd\x10\xea\x21\x35\x7d\xe8\x86\xdb\x15\xed\x81\x81\x07\x28\xbb\x13\x28\xc7\xf8\xce\x7d\x8d\xc2\x31\xb4\x7e\x94\xd6\xdb\x55\xef\x4a\xfb\xed\xc3\x40\x3e\xeb\x9f\xe9\x99\x0f\xdf\x08\x65\x88\x27\x73\x86\x31\x9d\x47\xdf\x55\x19\xba\x3d\xee\x15\x0a\xcd\x8c\xaa\x5e\xb9\xf6\x57\x33\x73\x5a\xa1\x89\x7b\x3b\xa0\xb2\xa4\xc2\xf6\xc1\x53\xb5\x00\xca\x23\xe5\xf4\x60\x6a\xb4\x2d\x74\xea\x4e\xed\x3b\xe3\x47\xfb\xed\x82\x3d\x19\xd4\x3b\x6b\xaf\xae\x2b\x2f\x57\xb3\x82\x68\xcb\xed\x88\x2e\xe1\x5c\xd7\x26\xfa\x0a\x65\xe7\xce\x11\x33\xb4\xdd\x66\xe3\x37\xf6\xfa\x70\xd6\x4f\xa1\x21\x51\xd8\x3c\x26\x14\x4b\xc6\x87\x44\x27\x1c\x70\xf8\x9e\x46\xce\xab\x21\x07\x5f\xc1\x76\x17\x1b\x77\xb4\xda\x75\xa0\x0a\x3a\x30\xe1\xf8\x97\x32\x16\x2b\x00\x75\x85\xee\x62\x46\xef\xd3\x85\xb5\x6b\x60\xbe\xf2\x30\x7a\x8c\x0b\x4b\xa6\xd0\xf9\x64\x42\xe7\x07\x41\x41\xe3\x2c\x5d\xf9\x6d\xe9\x39\x98\x3b\x3b\x5d\x67\xd4\x5c\xed\xf2\xf0\x48\x7b\xbd\x2d\x31\xdd\x3f\x34\xad\x44\x76\x51\x9a\x56\x22\xa7\x95\xc8\x69\x25\xf2\xe1\x56\x22\x1f\x00\x32\x6a\x73\x92\xed\xe1\xc6\x7d\x9f\x49\x2c\x69\x7e\xc8\x31\x4c\x0c\xb4\xf2\x54\x3b\x79\x3b\x9e\x4d\xb4\xd1\x18\x3e\x5f\x9a\x93\xa2\x11\xc3\xda\x27\x0b\xaf\x37\x2e\x5c\x37\xfb\xeb\x9a\xd6\xc3\xac\xc3\xcc\xf8\x1e\x5b\x9d\xac\x22\x64\xb7\xed\x26\xb8\xf3\xb9\x3c\xbb\x1f\xe2\xb0\x22\x77\x43\x6a\x62\x29\x39\x59\xa6\xe6\xe5\xcd\x7b\x83\xc0\x5b\x8e\x93\x64\xac\xeb\xca\x4f\x65\xac\x4a\xbc\x1e\xcd\x82\xfa\x3c\x70\x36\xb6\xb5\xed\x79\xef\xec\x68\x00\xff\x54\xfa\xb5\xe3\xf1\xdb\xe1\xbe\xce\x76\x17\xaf\x57\xb6\x6b\x89\x05\x09\xce\x52\xb9\x01\x2a\x49\xbe\xd9\xf4\xd2\xb8\x7a\xbf\x91\x02\xf3\x22\x8c\x13\xf2\x77\xd8\x8e\x43\x8b\xe1\x54\x6e\x5e\x9d\xc7\x49\x44\x02\x22\xc7\xa4\x79\x81\x85\xb8\x65\x3c\x1c\x93\xe6\x59\xa2\xf8\x1c\x51\x95\x05\xd9\x20\x00\x21\x7e\x60\x21\x58\xa9\x56\xff\xbe\xb6\x5a\x5e\x5b\x3f\x1f\xd6\xd3\x3c\xc4\x4d\xba\x99\xb4\x63\x6e\x7d\x3e\x3d\x57\xd2\x18\x5f\x47\xe8\xc3\x06\x8a\x68\x6c\x7f\x3b\x72\x0f\xe7\xe2\x77\x77\xf1\xd0\x99\xab\xdf\x2e\xfe\xd6\xbb\xcd\x1a\xb9\x90\xd1\xaf\xf2\x38\x3d\xdb\x74\xf8\xeb\xe3\xda\xe8\x2a\x62\xb7\xda\x1b\x07\xa9\xdc\x30\x5e\xbc\x68\xfb\x6b\x9f\x97\xf1\xc6\xb1\xd8\x5c\x29\x1e\x49\x30\xc5\xf7\xde\xad\x91\x42\xf9\xdd\xed\x89\x80\x25\xbe\x37\xd7\xe7\x32\x5c\xe6\x35\xac\xd4\x0c\x2d\xf7\x90\xc4\xe3\xf5\xe3\x2f\x7f\x54\x18\x88\xe3\x61\x47\x85\x64\x7f\xc0\xd7\x3f\x1a\x92\x42\xe9\xc7\x1e\x0d\x95\x76\xa7\x51\xa0\x8f\x02\x1b\x46\x9e\x06\x42\xd1\xf2\x01\x07\x02\xde\xe9\x7d\x1a\x0b\xa7\x32\x16\xcc\xc0\xee\xc4\x90\xd2\x5f\x6f\x98\x54\x5d\xf2\x95\xe1\xa7\x69\x10\x3a\x06\xe1\x65\xb3\x17\x47\x58\x78\xd0\x45\xd6\x5b\xd5\x5f\x25\x1d\x71\x49\xa6\x7a\x64\xda\xd0\x6f\xc7\x3a\x4c\xe3\x09\xc0\x6e\x96\x2c\xa7\xa7\x77\x34\x10\x05\x08\x21\x44\x92\x65\x77\xdf\x20\x5c\xbc\xe7\x97\x3f\xf4\x1a\x45\xd6\xe7\x27\x4a\xde\x74\x27\x66\x11\x7d\x70\xba\xd3\x78\xf9\x1e\x0d\xca\xc8\x39\xde\x7c\xb3\xa6\xe1\xbc\xd7\xc1\x6a\x6f\xb3\x0e\x52\xbe\xe4\x98\x8a\x15\x70\x94\x70\x26\x59\xc0\xa2\xf2\x1c\xfb\xd9\xc5\xf9\xbc\xd5\x92\x9c\xa3\xdf\xe6\x1e\xb3\x0d\x49\xba\x87\x50\x5f\x84\xfe\xe9\xd6\xf8\xbb\xe6\xf0\x7a\xeb\xa6\x65\x3b\x86\x8b\x79\x93\xf5\x59\x20\x6e\xb4\xa7\x44\xf4\x3f\xa5\xfe\x67\x42\x12\xdb\xd3\xe7\xbb\xa5\xa3\x8c\x5c\x2b\x97\xbb\xbb\x7f\x8e\xc5\x6e\xed\x43\x5c\xbf\x74\xc8\x8f\xff\xe6\xd6\xbe\x91\xb6\xf5\x95\xe4\xed\x93\xc4\xa8\x5b\xf9\x76\x4d\x35\xb7\xd8\x8c\xb6\x7d\xaf\x72\xe0\xb6\xbd\x01\x63\x9e\x76\xab\x1a\x32\x76\xe4\x8c\x76\xc2\xad\x6c\xa2\x65\xf7\xcf\xf8\xa7\xda\x2a\xb9\x8c\x3d\x3c\xa3\x9d\x64\x33\xe5\x1a\xb5\x2d\xfb\x86\xa2\x5a\x7f\x19\x5b\x7f\xc6\x3f\xd1\x53\xd3\xe2\x41\x5b\xd3\x4f\xf0\xec\xb0\x42\x73\x43\xd2\x68\x27\xd3\x6a\x6a\x34\xf6\x4e\x1e\x52\x8b\x87\x6c\xcc\xae\x44\xfb\x9e\xa7\x51\x4f\x9d\x55\x03\x81\x8e\x67\xfc\xb4\x69\xf0\x3a\x18\xf2\x40\xd0\xf6\xa8\x34\xe3\xc9\x98\xaf\xf6\xda\x24\xd3\xeb\x60\xb9\x0e\xd3\x1f\xa9\xff\xee\x1f\xfd\x37\x00\x00\xff\xff\x69\x5d\x0a\x6a\x39\x9d\x00\x00") +var _v2SchemaJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5d\x4f\x93\xdb\x36\xb2\xbf\xfb\x53\xa0\x14\x57\xd9\xae\xd8\x92\xe3\xf7\x2e\xcf\x97\xd4\xbc\xd8\x49\x66\x37\x5e\x4f\x79\x26\xbb\x87\x78\x5c\x05\x91\x2d\x09\x09\x09\x30\x00\x38\x33\x5a\xef\x7c\xf7\x2d\xf0\x9f\x08\x02\x20\x41\x8a\xd2\xc8\x0e\x0f\xa9\x78\x28\xa0\xd1\xdd\x68\x34\x7e\xdd\xf8\xf7\xf9\x11\x42\x33\x49\x64\x04\xb3\xd7\x68\x76\x86\xfe\x76\xf9\xfe\x1f\xe8\x32\xd8\x40\x8c\xd1\x8a\x71\x74\x79\x8b\xd7\x6b\xe0\xe8\xd5\xfc\x25\x3a\xbb\x38\x9f\xcf\x9e\xab\x0a\x24\x54\xa5\x37\x52\x26\xaf\x17\x0b\x91\x17\x99\x13\xb6\xb8\x79\xb5\x10\x59\xdd\xf9\xef\x82\xd1\x6f\xf2\xc2\x8f\xf3\x4f\xb5\x1a\xea\xc7\x17\x45\x41\xc6\xd7\x8b\x90\xe3\x95\x7c\xf1\xf2\x7f\x8b\xca\x45\x3d\xb9\x4d\x32\xa6\xd8\xf2\x77\x08\x64\xfe\x8d\xc3\x9f\x29\xe1\xa0\x9a\xff\xed\x11\x42\x08\xcd\x8a\xd6\xb3\x9f\x15\x67\x74\xc5\xca\x7f\x27\x58\x6e\xc4\xec\x11\x42\xd7\x59\x5d\x1c\x86\x44\x12\x46\x71\x74\xc1\x59\x02\x5c\x12\x10\xb3\xd7\x68\x85\x23\x01\x59\x81\x04\x4b\x09\x9c\x6a\xbf\x7e\xce\x49\x7d\xba\x7b\x51\xfd\xa1\x44\xe2\xb0\x52\xac\x7d\xb3\x08\x61\x45\x68\x46\x56\x2c\x6e\x80\x86\x8c\xbf\xbd\x93\x40\x05\x61\x74\x96\x95\xbe\x7f\x84\xd0\x7d\x4e\xde\x42\xb7\xe4\xbe\x46\xbb\x14\x5b\x48\x4e\xe8\xba\x90\x05\xa1\x19\xd0\x34\xae\xc4\xce\xbe\xbc\x9a\xbf\x9c\x15\x7f\x5d\x57\xc5\x42\x10\x01\x27\x89\xe2\x48\x51\xb9\xda\x40\xd5\x87\x37\xc0\x15\x5f\x88\xad\x90\xdc\x10\x81\x42\x16\xa4\x31\x50\x39\x2f\x38\xad\xab\xb0\x53\xd8\xac\x94\x56\x6f\xc3\x84\xf4\x11\xa4\x50\xb3\xfa\xe9\xd3\x6f\x9f\x3e\xdf\x2f\xd0\xeb\x8f\x1f\x3f\x7e\xbc\xfe\xf6\xe9\xf7\xaf\x5f\x7f\xfc\x18\x7e\xfb\xec\xfb\xc7\xb3\x36\x79\x54\x43\xe8\x29\xc5\x31\x20\xc6\x11\x49\x9e\xe5\x12\x41\x66\xa0\xe8\xed\x1d\x8e\x93\x08\x5e\xa3\x27\x3b\xc3\x7c\xa2\x73\xba\xc4\x02\x2e\xb0\xdc\xf4\xe5\x76\xd1\xca\x96\xa2\x8a\x94\xcd\x21\xc9\x6c\xec\x2c\x70\x42\x9e\x34\x74\x9d\x19\x7c\xcd\x20\x9c\xea\x2e\x0a\xfe\x42\x84\xd4\x29\x04\x8c\x8a\xb4\x41\xa2\xc1\xdc\x19\x8a\x88\x90\x4a\x49\xef\xce\xdf\xbd\x45\x4a\x52\x81\x70\x10\x40\x22\x21\x44\xcb\x6d\xc5\xec\x4e\x3c\x1c\x45\xef\x57\x9a\xb5\x7d\xae\xfe\xe5\xe4\x31\x86\x90\xe0\xab\x6d\x02\x3b\x2e\xcb\x11\x90\xd9\xa8\xc6\x77\xc2\x59\x98\x06\xfd\xf9\x2e\x78\x45\x01\xa6\xa8\xa0\x71\x5c\xbe\x33\xa7\xd2\xd9\x5f\x95\xef\xd9\xd5\xac\xfd\xdc\x5d\xbf\x5e\xb8\xd1\x3e\xc7\x31\x48\xe0\x5e\x4c\x14\x65\xdf\xb8\xa8\x71\x10\x09\xa3\xc2\xc7\x02\xcb\xa2\x4e\x5a\x02\x82\x94\x13\xb9\xf5\x30\xe6\xb2\xa4\xb5\xfe\x9b\x3e\x7a\xb2\x55\xd2\xa8\x4a\xbc\x16\xb6\x71\x8e\x39\xc7\xdb\x9d\xe1\x10\x09\x71\xbd\x9c\xb3\x41\x89\xd7\xa5\x89\xdc\x57\xb5\x53\x4a\xfe\x4c\xe1\xbc\xa0\x21\x79\x0a\x1a\x0f\x70\xa7\x5c\x08\x8e\xde\xb0\xc0\x43\x24\xad\x74\x63\x0e\xb1\xd9\x90\xe1\xb0\x2d\x13\xa7\x6d\x78\xfd\x04\x14\x38\x8e\x90\xaa\xce\x63\xac\x3e\x23\xbc\x64\xa9\xb4\xf8\x03\x63\xde\xcd\xbe\x16\x13\x4a\x55\xac\x82\x12\xc6\xac\xd4\x35\xf7\x22\xd4\x3a\xff\x22\x73\x0e\x6e\x51\xa0\x75\x1e\xae\x8f\xe8\x5d\xc7\x59\xe6\xe4\x9a\x18\x8d\xd6\x1c\x53\x84\x4d\xb7\x67\x28\x37\x09\x84\x69\x88\x12\x0e\x01\x11\x80\x32\xa2\xf5\xb9\xaa\xc6\xd9\x73\x53\xab\xfb\xb4\x2e\x20\xc6\x54\x92\xa0\x9a\xf3\x69\x1a\x2f\x81\x77\x37\xae\x53\x1a\xce\x40\xc4\xa8\x82\x1c\xb5\xef\xda\x24\x7d\xb9\x61\x69\x14\xa2\x25\xa0\x90\xac\x56\xc0\x81\x4a\xb4\xe2\x2c\xce\x4a\x64\x7a\x9a\x23\xf4\x13\x91\x3f\xa7\x4b\xf4\x63\x84\x6f\x18\x87\x10\xbd\xc3\xfc\x8f\x90\xdd\x52\x44\x04\xc2\x51\xc4\x6e\x21\x74\x48\x21\x81\xc7\xe2\xfd\xea\x12\xf8\x0d\x09\xf6\xe9\x47\x35\xaf\x67\xc4\x14\xf7\x22\x27\x97\xe1\xe2\x76\x2d\x06\x8c\x4a\x1c\x48\x3f\x73\x2d\x0b\x5b\x29\x45\x24\x00\x2a\x0c\x11\xec\x94\xca\xc2\xa6\xc1\x37\x21\x43\x83\x3b\x5f\x97\xf1\x43\x5e\x53\x73\x19\xa5\x36\xd8\x2d\x05\x2e\x34\x0b\xeb\x39\xfc\x1d\x63\x51\x01\xbd\x3d\xbb\x90\x84\x40\x25\x59\x6d\x09\x5d\xa3\x1c\x37\xe6\x5c\x16\x9a\x40\x09\x70\xc1\xe8\x82\xf1\x35\xa6\xe4\xdf\x99\x5c\x8e\x9e\x4d\x79\xb4\x27\x2f\xbf\x7e\xf8\x05\x25\x8c\x50\xa9\x98\x29\x90\x62\x60\xea\x75\xae\x13\xca\xbf\x2b\x1a\x29\x27\x76\xd6\x20\xc6\x64\x5f\xe6\x32\x1a\x08\x87\x21\x07\x21\xbc\xb4\xe4\xe0\x32\x67\xa6\xcd\xf3\x1e\xcd\xd9\x6b\xb6\x6f\x8e\x27\xa7\xed\xdb\xe7\xbc\xcc\x1a\x07\xce\x6f\x87\x33\xf0\xba\x51\x17\x22\x66\x78\x79\x8e\xce\xe5\x13\x81\x80\x06\x2c\xe5\x78\x0d\xa1\xb2\xb8\x54\xa8\x79\x09\xbd\xbf\x3c\x47\x01\x8b\x13\x2c\xc9\x32\xaa\xaa\x1d\xd5\xee\xab\x36\xbd\x6c\xfd\x54\x6c\xc8\x08\x01\x3c\xbd\xe7\x07\x88\xb0\x24\x37\x79\x90\x28\x4a\x1d\x10\x1a\x92\x1b\x12\xa6\x38\x42\x40\xc3\x4c\x43\x62\x8e\xae\x36\xb0\x45\x71\x2a\xa4\x9a\x23\x79\x59\xb1\xa8\xf2\xa4\x0c\x60\x9f\xcc\x8d\x40\xf5\x80\xca\xa8\x99\xc3\xa7\x85\x1f\x31\x25\xa9\x82\xc5\x6d\xbd\xd8\x36\x76\x7c\x02\x28\x97\xf6\x1d\x74\x3b\x11\x7e\x91\xae\x32\xf8\x6c\xf4\xe6\x7b\x9a\xa5\x1f\x62\xc6\x21\xcf\x9a\xe5\xed\x8b\x02\xf3\x2c\x33\x33\xdf\x00\xca\xc9\x09\xb4\x04\xf5\xa5\x08\xd7\xc3\x02\x18\x66\xf1\xab\x1e\x83\x37\x4c\xcd\x12\xc1\x1d\x50\xf6\xaa\xbd\xfe\xe2\x73\x48\x38\x08\xa0\x32\x9b\x18\x44\x86\x0b\x6a\xc1\xaa\x26\x96\x2d\x96\x3c\xa0\x54\x65\x73\xe3\x08\xb5\x8b\x99\xbd\x82\xbc\x9e\xc2\xe8\x53\x46\x83\x3f\x33\x54\x2b\x5b\xad\x92\x79\xd9\x8f\x5d\x93\x98\xf2\xe6\xc6\x1c\xe6\x9a\x9e\xfc\x43\x82\x31\x66\x8e\x53\x77\xfe\x90\xe7\xf3\xf6\xe9\x62\x23\x3f\x10\x93\x18\xae\x72\x1a\x9d\xf9\x48\xcb\xcc\x5a\x65\xc7\x4a\x04\xf0\xf3\xd5\xd5\x05\x8a\x41\x08\xbc\x86\x86\x43\x51\x6c\xe0\x46\x57\xf6\x44\x40\x0d\xfb\xff\xa2\xc3\x7c\x3d\x39\x84\xdc\x09\x22\x64\x4f\x12\xd9\xba\xaa\xf6\xe3\xbd\x56\xdd\x91\x25\x6a\x14\x9c\x89\x34\x8e\x31\xdf\xee\x15\x7e\x2f\x39\x81\x15\x2a\x28\x95\x66\x51\xf5\xfd\x83\xc5\xfe\x15\x07\xcf\xf7\x08\xee\x1d\x8e\xb6\xc5\x52\xcc\x8c\x5a\x93\x66\xc5\xd8\x79\x38\x46\xd6\xa7\x88\x37\xc9\x2e\xe3\xd2\xa5\x7b\x4b\x3a\xdc\xa1\xdc\x9e\x29\xf1\x8c\x8a\x99\x16\x47\x8d\xd4\x78\x8b\xf6\x1c\xe9\x71\x54\x1b\x69\xa8\x4a\x93\x37\xe5\xb2\x2c\x4f\x0c\x92\xab\xa0\x73\x32\x72\x59\xd3\xf0\x2d\x8d\xed\xca\x37\x16\x19\x9e\xdb\x1c\xab\x17\x49\xc3\x0f\x37\xdc\x88\xb1\xb4\xd4\x42\xcb\x58\x5e\x6a\x52\x0b\x15\x10\x0a\xb0\x04\xe7\xf8\x58\x32\x16\x01\xa6\xcd\x01\xb2\xc2\x69\x24\x35\x38\x6f\x30\x6a\xae\x1b\xb4\x71\xaa\xad\x1d\xa0\xd6\x20\x2d\x8b\x3c\xc6\x82\x62\x27\x34\x6d\x15\x84\x7b\x43\xb1\x35\x78\xa6\x24\x77\x28\xc1\x6e\xfc\xe9\x48\x74\xf4\x15\xe3\xe1\x84\x42\x88\x40\x7a\x26\x49\x3b\x48\xb1\xa4\x19\x8e\x0c\xa7\xb5\x01\x6c\x0c\x97\x61\x8a\xc2\x32\xd8\x8c\x44\x69\x24\xbf\x65\x1d\x74\xd6\xe5\x44\xef\xec\x48\x5e\xb7\x8a\xa3\x29\x8e\x41\x64\xce\x1f\x88\xdc\x00\x47\x4b\x40\x98\x6e\xd1\x0d\x8e\x48\x98\x63\x5c\x21\xb1\x4c\x05\x0a\x58\x98\xc5\x6d\x4f\x0a\x77\x53\x4f\x8b\xc4\x44\x1f\xb2\xdf\x8d\x3b\xea\x9f\xfe\xf6\xf2\xc5\xff\x5d\x7f\xfe\x9f\xfb\x67\x8f\xff\xf3\xe9\x69\xd1\xfe\xb3\xc7\xfd\x3c\xf8\x3f\x71\x94\x82\x23\xd1\x72\x00\xb7\x42\x99\x6c\xc0\x60\x7b\x0f\x79\xea\xa8\x53\x4b\x56\x31\xfa\x0b\x52\x9f\x96\xdb\xcd\x2f\xd7\x67\xcd\x04\x19\x85\xfe\xdb\x02\x9a\x59\x03\xad\x63\x3c\xea\xff\x2e\x18\xfd\x00\xd9\xe2\x56\x60\x59\x93\xb9\xb6\xb2\x3e\x3c\x2c\xab\x0f\xa7\xb2\x89\x43\xc7\xf6\xd5\xce\x2e\xad\xa6\xa9\xed\xa6\xc6\x5a\xb4\xa6\x67\xdf\x8c\x26\x7b\x50\x5a\x91\x08\x2e\x6d\xd4\x3a\xc1\x9d\xf2\xdb\xde\x1e\xb2\x2c\x6c\xa5\x64\xc9\x16\xb4\x90\xaa\x4a\xb7\x0c\xde\x13\xc3\x2a\x9a\x11\x9b\x7a\x1b\x3d\x95\x97\x37\x31\x6b\x69\x7e\x34\xc0\x67\x1f\x66\x19\x49\xef\xf1\x25\xf5\xac\x0e\xea\x0a\x28\x8d\x4d\x7e\xd9\x57\x4b\x49\xe5\xc6\xb3\x25\xfd\xe6\x57\x42\x25\xac\xcd\xcf\x36\x74\x8e\xca\x24\x47\xe7\x80\xa8\x92\x72\xbd\x3d\x84\x2d\x65\xe2\x82\x1a\x9c\xc4\x44\x92\x1b\x10\x79\x8a\xc4\x4a\x2f\x60\x51\x04\x81\xaa\xf0\xa3\x95\x27\xd7\x12\x7b\xa3\x96\x03\x45\x96\xc1\x8a\x07\xc9\xb2\xb0\x95\x52\x8c\xef\x48\x9c\xc6\x7e\x94\xca\xc2\x0e\x07\x12\x44\xa9\x20\x37\xf0\xae\x0f\x49\xa3\x96\x9d\x4b\x42\x7b\x70\x59\x14\xee\xe0\xb2\x0f\x49\xa3\x96\x4b\x97\xbf\x00\x5d\x4b\x4f\xfc\xbb\x2b\xee\x92\xb9\x17\xb5\xaa\xb8\x0b\x97\x17\x9b\x43\xfd\xd6\xc2\xb2\xc2\x2e\x29\xcf\xfd\x87\x4a\x55\xda\x25\x63\x1f\x5a\x65\x69\x2b\x2d\x3d\x67\xe9\x41\xae\x5e\xc1\x6e\x2b\xd4\xdb\x3e\xa8\xd3\x26\xd2\x48\x92\x24\xca\x61\x86\x8f\x8c\xbb\xf2\x8e\x91\xdf\x1f\x06\x19\x33\xf3\x03\x4d\xba\xcd\xe2\x2d\xfb\x69\xe9\x16\x15\x13\xd5\x56\x85\x4e\x3c\x5b\x8a\xbf\x25\x72\x83\xee\x5e\x20\x22\xf2\xc8\xaa\x7b\xdb\x8e\xe4\x29\x58\xca\x38\xb7\x3f\x2e\x59\xb8\xbd\xa8\x16\x16\xf7\xdb\x79\x51\x9f\x5a\xb4\x8d\x87\x3a\x6e\xbc\x3e\xc5\xb4\xcd\x58\xf9\xf5\x3c\xb9\x6f\x49\xaf\x57\xc1\xfa\x1c\x5d\x6d\x88\x8a\x8b\xd3\x28\xcc\xb7\xef\x10\x8a\x4a\x74\xa9\x4a\xa7\x62\xbf\x0d\x76\x23\x6f\x59\xd9\x31\xee\x40\x11\xfb\x28\xec\x8d\x22\x1c\x13\x5a\x64\x94\x23\x16\x60\xbb\xd2\x7c\xa0\x98\xb2\xe5\x6e\xbc\x54\x33\xe0\x3e\xb9\x52\x17\xdb\xb7\x1b\xc8\x12\x20\x8c\x23\xca\x64\x7e\x78\xa3\x62\x5b\x75\x56\xd9\x9e\x2a\x91\x27\xb0\x70\x34\x1f\x90\x89\xb5\x86\x73\x7e\x71\xda\x1e\xfb\x3a\x72\xdc\x5e\x79\x88\xcb\x74\x79\xd9\x64\xe4\xd4\xc2\x9e\xce\xb1\xfe\x85\x5a\xc0\xe9\x0c\x34\x3d\xd0\x43\xce\xa1\x36\x39\xd5\xa1\x4e\xf5\xf8\xb1\xa9\x23\x08\x75\x84\xac\x53\x6c\x3a\xc5\xa6\x53\x6c\x3a\xc5\xa6\x7f\xc5\xd8\xf4\x51\xfd\xff\x25\x4e\xfa\x33\x05\xbe\x9d\x60\xd2\x04\x93\x6a\x5f\x33\x9b\x98\x50\xd2\xe1\x50\x52\xc6\xcc\xdb\x38\x91\xdb\xe6\xaa\xa2\x8f\xa1\x6a\xa6\xd4\xc6\x56\xd6\x8c\x40\x02\x68\x48\xe8\x1a\xe1\x9a\xd9\x2e\xb7\x05\xc3\x34\xda\x2a\xbb\xcd\x12\x36\x98\x22\x50\x4c\xa1\x1b\xc5\xd5\x84\xf0\xbe\x24\x84\xf7\x2f\x22\x37\xef\x94\xd7\x9f\xa0\xde\x04\xf5\x26\xa8\x37\x41\x3d\x64\x40\x3d\xe5\xf2\xde\x60\x89\x27\xb4\x37\xa1\xbd\xda\xd7\xd2\x2c\x26\xc0\x37\x01\x3e\x1b\xef\x5f\x06\xe0\x6b\x7c\x5c\x91\x08\x26\x10\x38\x81\xc0\x09\x04\x76\x4a\x3d\x81\xc0\xbf\x12\x08\x4c\xb0\xdc\x7c\x99\x00\xd0\x75\x70\xb4\xf8\x5a\x7c\xea\xde\x3e\x39\x08\x30\x5a\x27\x35\xed\xb4\x65\xad\x69\x74\x10\x88\x79\xe2\x30\x52\x19\xd6\x04\x21\xa7\x95\xd5\x0e\x03\xf8\xda\x20\xd7\x84\xb4\x26\xa4\x35\x21\xad\x09\x69\x21\x03\x69\x51\x46\xff\xff\x18\x9b\x54\xed\x87\x47\x06\x9d\x4e\x73\x6e\x9a\xb3\xa9\xce\x83\x5e\x4b\xc6\x71\x20\x45\xd7\x72\xf5\x40\x72\x0e\x34\x6c\xf4\x6c\xf3\xba\x5e\x4b\x97\x0e\x52\xb8\xbe\x8b\x79\xa0\x10\x86\xa1\x75\xb0\x6f\xec\xc8\xf4\x3d\x4d\x7b\x86\xc2\x02\x31\x12\x51\xbf\x07\x94\xad\x10\xd6\x2e\x79\xcf\xe9\x1c\xf5\x1e\x31\x23\x5c\x18\xfb\x9c\xfb\x70\xe0\x62\xbd\xf7\xb5\x94\xcf\xf3\xf6\xfa\xc5\x4e\x9c\x85\x76\x1d\xae\x37\xbc\xde\xa3\x41\xcb\x29\xd0\x5e\x70\x67\x50\x93\x6d\x98\xa8\xd3\x67\x0f\x68\xb1\xeb\x38\x47\x07\x10\x1b\xd2\xe2\x18\x68\x6d\x40\xbb\xa3\x40\xba\x21\xf2\x8e\x81\xfb\xf6\x92\x77\x2f\x70\xe8\xdb\xb2\x36\xbf\x30\x91\xc5\x21\xe7\x45\xcc\x34\x0c\x48\x8e\xd0\xf2\x9b\x7c\x3c\xbd\x1c\x04\x3e\x07\xe8\x7c\x2f\x84\x7a\x48\x4d\x1f\xba\xe1\x76\x45\x7b\x60\xe0\x01\xca\xee\x04\xca\x31\xbe\x73\x5f\xa3\x70\x0c\xad\x1f\xa5\xf5\x76\xd5\xbb\xd2\x7e\xfb\x30\x90\xcf\xfa\x67\x7a\xe6\xc3\x37\x42\x19\xe2\xc9\x9c\x61\x4c\xe7\xd1\x77\x55\x86\x6e\x8f\x7b\x85\x42\x33\xa3\xaa\x57\xae\xfd\xd5\xcc\x9c\x56\x68\xe2\xde\x0e\xa8\x2c\xa9\xb0\x7d\xf0\x54\x2d\x80\xf2\x48\x39\x3d\x98\x1a\x6d\x0b\x9d\xba\x53\xfb\xce\xf8\xd1\x7e\xbb\x60\x4f\x06\xf5\xce\xda\xab\xeb\xca\xcb\xd5\xac\x20\xda\x72\x3b\xa2\x4b\x38\xd7\xb5\x89\xbe\x42\xd9\xb9\x73\xc4\x0c\x6d\xb7\xd9\xf8\x8d\xbd\x3e\x9c\xf5\x53\x68\x48\x14\x36\x8f\x09\xc5\x92\xf1\x21\xd1\x09\x07\x1c\xbe\xa7\x91\xf3\x6a\xc8\xc1\x57\xb0\xdd\xc5\xc6\x1d\xad\x76\x1d\xa8\x82\x0e\x4c\x38\xfe\xa5\x8c\xc5\x0a\x40\x5d\xa1\xbb\x98\xd1\xfb\x74\x61\xed\x1a\x98\xaf\x3c\x8c\x1e\xe3\xc2\x92\x29\x74\x3e\x99\xd0\xf9\x41\x50\xd0\x38\x4b\x57\x7e\x5b\x7a\x0e\xe6\xce\x4e\xd7\x19\x35\x57\xbb\x3c\x3c\xd2\x5e\x4f\x4b\x4c\xf7\x0f\x4d\x2b\x91\x5d\x94\xa6\x95\xc8\x69\x25\x72\x5a\x89\x7c\xb8\x95\xc8\x07\x80\x8c\xda\x9c\x64\x7b\xb7\x71\xdf\x57\x12\x4b\x9a\x1f\x72\x0c\x13\x03\xad\x3c\xd5\x4e\xde\x8e\x57\x13\x6d\x34\x86\xcf\x97\xe6\xa4\x68\xc4\xb0\xf6\xc9\xc2\xeb\x8d\x0b\xd7\xcd\xfe\xba\xa6\xf5\x30\xeb\x30\x33\xbe\xc7\x56\x27\xab\x08\xd9\x6d\xbb\x09\xee\x7c\x2d\xcf\xee\x87\x38\xac\xc8\xdd\x90\x9a\x58\x4a\x4e\x96\xa9\x79\x79\xf3\xde\x20\xf0\x96\xe3\x24\x19\xeb\xba\xf2\x53\x19\xab\x12\xaf\x47\xb3\xa0\x3e\xef\x9b\x8d\x6d\x6d\x7b\xde\x3b\x3b\x1a\xc0\x3f\x95\x7e\xed\x78\xfb\x76\xb8\xaf\xb3\xdd\xc5\xeb\x95\xed\x5a\x62\x41\x82\xb3\x54\x6e\x80\x4a\x92\x6f\x36\xbd\x34\xae\xde\x6f\xa4\xc0\xbc\x08\xe3\x84\xfc\x1d\xb6\xe3\xd0\x62\x38\x95\x9b\x57\xe7\x71\x12\x91\x80\xc8\x31\x69\x5e\x60\x21\x6e\x19\x0f\xc7\xa4\x79\x96\x28\x3e\x47\x54\x65\x41\x36\x08\x40\x88\x1f\x58\x08\x56\xaa\xd5\xbf\xaf\xad\x96\xd7\xd6\xcf\x87\xf5\x34\x0f\x71\x93\x6e\x26\xed\x98\x5b\x9f\x4f\xcf\x95\x34\xc6\xd7\x11\xfa\xb0\x81\x22\x1a\xdb\xdf\x8e\xdc\xc3\xb9\xf8\xdd\x5d\x3c\x74\xe6\xea\xb7\x8b\xbf\xf5\x6e\xb3\x46\x2e\x64\xf4\xab\x3c\x4e\xcf\x36\x1d\xfe\xfa\xb8\x36\xba\x8a\xd8\xad\xf6\xc6\x41\x2a\x37\x8c\x17\x0f\xda\xfe\xda\xe7\x65\xbc\x71\x2c\x36\x57\x8a\x47\x12\x4c\xf1\xbd\x77\x6b\xa4\x50\x7e\x77\x7b\x22\x60\x89\xef\xcd\xf5\xb9\x0c\x97\x79\x0d\x2b\x35\x43\xcb\x3d\x24\xf1\x78\xfc\xf8\xcb\x1f\x15\x06\xe2\x78\xd8\x51\x21\xd9\x1f\xf0\xf5\x8f\x86\xa4\x50\xfa\xb1\x47\x43\xa5\xdd\x69\x14\xe8\xa3\xc0\x86\x91\xa7\x81\x50\xb4\x7c\xc0\x81\x80\x77\x7a\x9f\xc6\xc2\xa9\x8c\x05\x33\xb0\x3b\x31\xa4\xf4\xd7\x1b\x26\x55\x97\x7c\x65\xf8\x69\x1a\x84\x8e\x41\x78\xd9\xec\xc5\x11\x16\x1e\x74\x91\xf5\x56\xf5\x57\x49\x47\x5c\x92\xa9\x1e\x99\x36\xf4\xdb\xb1\x0e\xd3\x78\x02\xb0\x9b\x25\xcb\xe9\xe9\x1d\x0d\x44\x01\x42\x08\x91\x64\xd9\xdd\x37\x08\x17\xef\xf9\xe5\x0f\xbd\x46\x91\xf5\xf9\x89\x92\x37\xdd\x89\x59\x44\x1f\x9c\xee\x34\x1e\xbe\x47\x83\x32\x72\x8e\x37\xdf\xac\x69\x38\xef\x75\xb0\xda\xdb\xac\x83\x94\x2f\x39\xa6\x62\x05\x1c\x25\x9c\x49\x16\xb0\xa8\x3c\xc7\x7e\x76\x71\x3e\x6f\xb5\x24\xe7\xe8\xb7\xb9\xc7\x6c\x43\x92\xee\x21\xd4\x17\xa1\x7f\xba\x35\xfe\xae\x39\xbc\xde\xba\x69\xd9\x8e\xe1\x62\xde\x64\x7d\x16\x88\x1b\xed\x29\x11\xfd\x4f\xa9\xff\x99\x90\xc4\xf6\xf4\xf9\x6e\xe9\x28\x23\xd7\xca\xe5\xee\xee\x9f\x63\xb1\x5b\xfb\x10\xd7\x2f\x1d\xf2\xe3\xbf\xb9\xb5\x6f\xa4\x6d\x7d\x25\x79\xfb\x24\x31\xea\x56\xbe\x5d\x53\xcd\x2d\x36\xa3\x6d\xdf\xab\x1c\xb8\x6d\x6f\xc0\x98\xa7\xdd\xaa\x86\x8c\x1d\x39\xa3\x9d\x70\x2b\x9b\x68\xd9\xfd\x33\xfe\xa9\xb6\x4a\x2e\x63\x0f\xcf\x68\x27\xd9\x4c\xb9\x46\x6d\xcb\xbe\xa1\xa8\xd6\x5f\xc6\xd6\x9f\xf1\x4f\xf4\xd4\xb4\x78\xd0\xd6\xf4\x13\x3c\x3b\xac\xd0\xdc\x90\x34\xda\xc9\xb4\x9a\x1a\x8d\xbd\x93\x87\xd4\xe2\x21\x1b\xb3\x2b\xd1\xbe\xe7\x69\xd4\x53\x67\xd5\x40\xa0\xe3\x19\x3f\x6d\x1a\xbc\x0e\x86\x3c\x10\xb4\x3d\x2a\xcd\x78\x32\xe6\xab\xbd\x36\xc9\xf4\x3a\x58\xae\xc3\xf4\x47\xea\xbf\xfb\x47\xff\x0d\x00\x00\xff\xff\xd2\x32\x5a\x28\x38\x9d\x00\x00") -func v2SchemaJSONBytes() ([]byte, error) { +func v2SchemaJsonBytes() ([]byte, error) { return bindataRead( - _v2SchemaJSON, + _v2SchemaJson, "v2/schema.json", ) } -func v2SchemaJSON() (*asset, error) { - bytes, err := v2SchemaJSONBytes() +func v2SchemaJson() (*asset, error) { + bytes, err := v2SchemaJsonBytes() if err != nil { return nil, err } - info := bindataFileInfo{name: "v2/schema.json", size: 40249, mode: os.FileMode(0644), modTime: time.Unix(1567900649, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x25, 0x27, 0xe8, 0x46, 0xae, 0x22, 0xc4, 0xf4, 0x8b, 0x1, 0x32, 0x4d, 0x1f, 0xf8, 0xdf, 0x75, 0x15, 0xc8, 0x2d, 0xc7, 0xed, 0xe, 0x7e, 0x0, 0x75, 0xc0, 0xf9, 0xd2, 0x1f, 0x75, 0x57}} + info := bindataFileInfo{name: "v2/schema.json", size: 40248, mode: os.FileMode(0640), modTime: time.Unix(1568964748, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xab, 0x88, 0x5e, 0xf, 0xbf, 0x17, 0x74, 0x0, 0xb2, 0x5a, 0x7f, 0xbc, 0x58, 0xcd, 0xc, 0x25, 0x73, 0xd5, 0x29, 0x1c, 0x7a, 0xd0, 0xce, 0x79, 0xd4, 0x89, 0x31, 0x27, 0x90, 0xf2, 0xff, 0xe6}} return a, nil } @@ -201,9 +201,9 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "jsonschema-draft-04.json": jsonschemaDraft04JSON, + "jsonschema-draft-04.json": jsonschemaDraft04Json, - "v2/schema.json": v2SchemaJSON, + "v2/schema.json": v2SchemaJson, } // AssetDir returns the file names below a certain @@ -247,9 +247,9 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "jsonschema-draft-04.json": &bintree{jsonschemaDraft04JSON, map[string]*bintree{}}, + "jsonschema-draft-04.json": &bintree{jsonschemaDraft04Json, map[string]*bintree{}}, "v2": &bintree{nil, map[string]*bintree{ - "schema.json": &bintree{v2SchemaJSON, map[string]*bintree{}}, + "schema.json": &bintree{v2SchemaJson, map[string]*bintree{}}, }}, }} diff --git a/vendor/github.com/go-openapi/spec/expander.go b/vendor/github.com/go-openapi/spec/expander.go index 1e7fc8c490c6..043720d7d8ea 100644 --- a/vendor/github.com/go-openapi/spec/expander.go +++ b/vendor/github.com/go-openapi/spec/expander.go @@ -452,11 +452,12 @@ func expandPathItem(pathItem *PathItem, resolver *schemaLoader, basePath string) return err } if pathItem.Ref.String() != "" { - var err error - resolver, err = resolver.transitiveResolver(basePath, pathItem.Ref) - if resolver.shouldStopOnError(err) { + transitiveResolver, err := resolver.transitiveResolver(basePath, pathItem.Ref) + if transitiveResolver.shouldStopOnError(err) { return err } + basePath = transitiveResolver.updateBasePath(resolver, basePath) + resolver = transitiveResolver } pathItem.Ref = Ref{} diff --git a/vendor/github.com/go-openapi/spec/go.mod b/vendor/github.com/go-openapi/spec/go.mod index 02a142c03c22..14e5f2dac3aa 100644 --- a/vendor/github.com/go-openapi/spec/go.mod +++ b/vendor/github.com/go-openapi/spec/go.mod @@ -4,14 +4,9 @@ require ( github.com/go-openapi/jsonpointer v0.19.3 github.com/go-openapi/jsonreference v0.19.2 github.com/go-openapi/swag v0.19.5 - github.com/kr/pty v1.1.5 // indirect - github.com/stretchr/objx v0.2.0 // indirect github.com/stretchr/testify v1.3.0 - golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 // indirect golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 // indirect - golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f // indirect - golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59 // indirect - gopkg.in/yaml.v2 v2.2.2 + gopkg.in/yaml.v2 v2.2.4 ) go 1.13 diff --git a/vendor/github.com/go-openapi/spec/go.sum b/vendor/github.com/go-openapi/spec/go.sum index 86db601c9782..c209ff971206 100644 --- a/vendor/github.com/go-openapi/spec/go.sum +++ b/vendor/github.com/go-openapi/spec/go.sum @@ -1,5 +1,3 @@ -github.com/PuerkitoBio/purell v1.1.0 h1:rmGxhojJlM0tuKtfdvliR84CFHljx9ag64t2xmVkjK4= -github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= @@ -7,20 +5,12 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdko 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/go-openapi/jsonpointer v0.17.0 h1:nH6xp8XdXHx8dqveo0ZuJBluCO2qGrPbDNZ0dwoRHP0= -github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.19.0 h1:FTUMcX77w5rQkClIzDtTxvn6Bsa894CcrzNj2MMfeg8= -github.com/go-openapi/jsonpointer v0.19.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.19.2 h1:A9+F4Dc/MCNB5jibxf6rRvOvR/iFgQdyNx9eIhnGqq0= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.19.0 h1:BqWKpV1dFd+AuiKlgtddwVIFQsuMpxfBDBHGfM2yNpk= -github.com/go-openapi/jsonreference v0.19.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.19.2 h1:o20suLFB4Ri0tuzpWtyHlh7E7HnkqTNLq6aR6WVNS1w= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -github.com/go-openapi/swag v0.17.0 h1:iqrgMg7Q7SvtbWLlltPrkMs0UBJI6oTSs79JFRUi880= -github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.19.2 h1:jvO6bCMBEilGwMfHhrd61zIID4oIFdwb76V17SM88dE= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= @@ -28,11 +18,8 @@ github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329 h1:2gxZ0XQIU/5z3Z3bUBu+FXuk2pFbkN6tcwi/pjyaDic= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63 h1:nTT4s92Dgz2HlrB2NaMgvlfqHH39OgMhA7z3PK7PGD4= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e h1:hB2xlXdHp/pmPZq0y3QnmWAArdw9PqbmotexnWx/FU8= @@ -40,35 +27,23 @@ github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN 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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/net v0.0.0-20181005035420-146acd28ed58 h1:otZG8yDCO4LVps5+9bxOeNiCvgmOyt96J3roHTYs7oE= -golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980 h1:dfGZHvZk057jK2MCeWus/TowKpJ8y4AmooUzdBSR9GU= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 h1:k7pJ2yAPLPgbskkFdhRCsA77k2fySZ1zf2zCjvQCiIM= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/github.com/go-openapi/spec/ref.go b/vendor/github.com/go-openapi/spec/ref.go index 08ff869b2fcd..1f31a9ead01f 100644 --- a/vendor/github.com/go-openapi/spec/ref.go +++ b/vendor/github.com/go-openapi/spec/ref.go @@ -68,10 +68,12 @@ func (r *Ref) IsValidURI(basepaths ...string) bool { } if r.HasFullURL { + //#nosec rr, err := http.Get(v) if err != nil { return false } + defer rr.Body.Close() return rr.StatusCode/100 == 2 } diff --git a/vendor/github.com/go-openapi/spec/schema_loader.go b/vendor/github.com/go-openapi/spec/schema_loader.go index 9e20e96c2a19..961d477571a0 100644 --- a/vendor/github.com/go-openapi/spec/schema_loader.go +++ b/vendor/github.com/go-openapi/spec/schema_loader.go @@ -86,12 +86,7 @@ func (r *schemaLoader) transitiveResolver(basePath string, ref Ref) (*schemaLoad newOptions := r.options newOptions.RelativeBase = rootURL.String() debugLog("setting new root: %s", newOptions.RelativeBase) - resolver, err := defaultSchemaLoader(root, newOptions, r.cache, r.context) - if err != nil { - return nil, err - } - - return resolver, nil + return defaultSchemaLoader(root, newOptions, r.cache, r.context) } func (r *schemaLoader) updateBasePath(transitive *schemaLoader, basePath string) string { diff --git a/vendor/github.com/go-openapi/strfmt/.golangci.yml b/vendor/github.com/go-openapi/strfmt/.golangci.yml index f260ce7e5cd1..03ffa31a4eef 100644 --- a/vendor/github.com/go-openapi/strfmt/.golangci.yml +++ b/vendor/github.com/go-openapi/strfmt/.golangci.yml @@ -20,6 +20,11 @@ linters: - lll - gochecknoinits - gochecknoglobals + - godox + - gocognit + - whitespace + - wsl + - funlen issues: exclude-rules: @@ -27,4 +32,5 @@ issues: text: "should be .*ObjectID" linters: - golint + - stylecheck diff --git a/vendor/github.com/go-openapi/strfmt/README.md b/vendor/github.com/go-openapi/strfmt/README.md index 87357cd024c7..b2645ce18a37 100644 --- a/vendor/github.com/go-openapi/strfmt/README.md +++ b/vendor/github.com/go-openapi/strfmt/README.md @@ -43,6 +43,19 @@ It also provides convenient extensions to go-openapi users. > It does not provide validation for numerical values with swagger format extension for JSON types "number" or > "integer" (e.g. float, double, int32...). +## Type conversion + +All types defined here are stringers and may be converted to strings with `.String()`. +Note that most types defined by this package may be converted directly to string like `string(Email{})`. + +`Date` and `DateTime` may be converted directly to `time.Time` like `time.Time(Time{})`. +Similarly, you can convert `Duration` to `time.Duration` as in `time.Duration(Duration{})` + +## Using pointers + +The `conv` subpackage provides helpers to convert the types to and from pointers, just like `go-openapi/swag` does +with primitive types. + ## Format types Types defined in strfmt expose marshaling and validation capabilities. diff --git a/vendor/github.com/go-openapi/strfmt/date.go b/vendor/github.com/go-openapi/strfmt/date.go index 2959e6573038..15029ffa2fea 100644 --- a/vendor/github.com/go-openapi/strfmt/date.go +++ b/vendor/github.com/go-openapi/strfmt/date.go @@ -151,3 +151,32 @@ func (d *Date) DeepCopy() *Date { d.DeepCopyInto(out) return out } + +// GobEncode implements the gob.GobEncoder interface. +func (d Date) GobEncode() ([]byte, error) { + return d.MarshalBinary() +} + +// GobDecode implements the gob.GobDecoder interface. +func (d *Date) GobDecode(data []byte) error { + return d.UnmarshalBinary(data) +} + +// MarshalBinary implements the encoding.BinaryMarshaler interface. +func (d Date) MarshalBinary() ([]byte, error) { + return time.Time(d).MarshalBinary() +} + +// UnmarshalBinary implements the encoding.BinaryUnmarshaler interface. +func (d *Date) UnmarshalBinary(data []byte) error { + var original time.Time + + err := original.UnmarshalBinary(data) + if err != nil { + return err + } + + *d = Date(original) + + return nil +} diff --git a/vendor/github.com/go-openapi/strfmt/go.mod b/vendor/github.com/go-openapi/strfmt/go.mod index 78c8489b20d0..eaf75447125b 100644 --- a/vendor/github.com/go-openapi/strfmt/go.mod +++ b/vendor/github.com/go-openapi/strfmt/go.mod @@ -11,3 +11,5 @@ require ( github.com/tidwall/pretty v1.0.0 // indirect go.mongodb.org/mongo-driver v1.0.3 ) + +go 1.13 diff --git a/vendor/github.com/go-openapi/strfmt/time.go b/vendor/github.com/go-openapi/strfmt/time.go index f9151259ed11..0b2f52d2490a 100644 --- a/vendor/github.com/go-openapi/strfmt/time.go +++ b/vendor/github.com/go-openapi/strfmt/time.go @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, @@ -16,14 +16,16 @@ package strfmt import ( "database/sql/driver" + "encoding/binary" "encoding/json" - "errors" "fmt" "regexp" "strings" "time" "go.mongodb.org/mongo-driver/bson" + + "go.mongodb.org/mongo-driver/bson/bsontype" ) func init() { @@ -57,12 +59,16 @@ const ( RFC3339Micro = "2006-01-02T15:04:05.000000Z07:00" // ISO8601LocalTime represents a ISO8601 format to ISO8601 in local time (no timezone) ISO8601LocalTime = "2006-01-02T15:04:05" + // ISO8601TimeWithReducedPrecision represents a ISO8601 format with reduced precision (dropped secs) + ISO8601TimeWithReducedPrecision = "2006-01-02T15:04Z" + // ISO8601TimeWithReducedPrecision represents a ISO8601 format with reduced precision and no timezone (dropped seconds + no timezone) + ISO8601TimeWithReducedPrecisionLocaltime = "2006-01-02T15:04" // DateTimePattern pattern to match for the date-time format from http://tools.ietf.org/html/rfc3339#section-5.6 DateTimePattern = `^([0-9]{2}):([0-9]{2}):([0-9]{2})(.[0-9]+)?(z|([+-][0-9]{2}:[0-9]{2}))$` ) var ( - dateTimeFormats = []string{RFC3339Micro, RFC3339Millis, time.RFC3339, time.RFC3339Nano, ISO8601LocalTime} + dateTimeFormats = []string{RFC3339Micro, RFC3339Millis, time.RFC3339, time.RFC3339Nano, ISO8601LocalTime, ISO8601TimeWithReducedPrecision, ISO8601TimeWithReducedPrecisionLocaltime} rxDateTime = regexp.MustCompile(DateTimePattern) // MarshalFormat sets the time resolution format used for marshaling time (set to milliseconds) MarshalFormat = RFC3339Millis @@ -165,26 +171,51 @@ func (t *DateTime) UnmarshalJSON(data []byte) error { return nil } +// MarshalBSON renders the DateTime as a BSON document func (t DateTime) MarshalBSON() ([]byte, error) { - return bson.Marshal(bson.M{"data": t.String()}) + return bson.Marshal(bson.M{"data": t}) } +// UnmarshalBSON reads the DateTime from a BSON document func (t *DateTime) UnmarshalBSON(data []byte) error { - var m bson.M - if err := bson.Unmarshal(data, &m); err != nil { - return err + var obj struct { + Data DateTime } - if data, ok := m["data"].(string); ok { - rd, err := ParseDateTime(data) - if err != nil { - return err - } - *t = rd - return nil + if err := bson.Unmarshal(data, &obj); err != nil { + return err } - return errors.New("couldn't unmarshal bson bytes value as Date") + *t = obj.Data + + return nil +} + +// MarshalBSONValue is an interface implemented by types that can marshal themselves +// into a BSON document represented as bytes. The bytes returned must be a valid +// BSON document if the error is nil. +// Marshals a DateTime as a bsontype.DateTime, an int64 representing +// milliseconds since epoch. +func (t DateTime) MarshalBSONValue() (bsontype.Type, []byte, error) { + // UnixNano cannot be used, the result of calling UnixNano on the zero + // Time is undefined. + i64 := time.Time(t).Unix() * 1000 + buf := make([]byte, 8) + binary.LittleEndian.PutUint64(buf, uint64(i64)) + + return bsontype.DateTime, buf, nil +} + +// UnmarshalBSONValue is an interface implemented by types that can unmarshal a +// BSON value representation of themselves. The BSON bytes and type can be +// assumed to be valid. UnmarshalBSONValue must copy the BSON value bytes if it +// wishes to retain the data after returning. +func (t *DateTime) UnmarshalBSONValue(tpe bsontype.Type, data []byte) error { + i64 := int64(binary.LittleEndian.Uint64(data)) + // TODO: Use bsonprim.DateTime.Time() method + *t = DateTime(time.Unix(i64/1000, i64%1000*1000000)) + + return nil } // DeepCopyInto copies the receiver and writes its value into out. @@ -201,3 +232,32 @@ func (t *DateTime) DeepCopy() *DateTime { t.DeepCopyInto(out) return out } + +// GobEncode implements the gob.GobEncoder interface. +func (t DateTime) GobEncode() ([]byte, error) { + return t.MarshalBinary() +} + +// GobDecode implements the gob.GobDecoder interface. +func (t *DateTime) GobDecode(data []byte) error { + return t.UnmarshalBinary(data) +} + +// MarshalBinary implements the encoding.BinaryMarshaler interface. +func (t DateTime) MarshalBinary() ([]byte, error) { + return time.Time(t).MarshalBinary() +} + +// UnmarshalBinary implements the encoding.BinaryUnmarshaler interface. +func (t *DateTime) UnmarshalBinary(data []byte) error { + var original time.Time + + err := original.UnmarshalBinary(data) + if err != nil { + return err + } + + *t = DateTime(original) + + return nil +} diff --git a/vendor/github.com/go-openapi/validate/.travis.yml b/vendor/github.com/go-openapi/validate/.travis.yml index dd3a4b29fdc1..db0bb78f5d4b 100644 --- a/vendor/github.com/go-openapi/validate/.travis.yml +++ b/vendor/github.com/go-openapi/validate/.travis.yml @@ -1,12 +1,10 @@ after_success: - bash <(curl -s https://codecov.io/bash) go: -- 1.11.x -- 1.12.x +- 1.13.x +- 1.14.x install: - GO111MODULE=off go get -u gotest.tools/gotestsum -env: -- GO111MODULE=on language: go notifications: slack: diff --git a/vendor/github.com/go-openapi/validate/spec.go b/vendor/github.com/go-openapi/validate/spec.go index ce8ba17ca0e4..f30dd79e3832 100644 --- a/vendor/github.com/go-openapi/validate/spec.go +++ b/vendor/github.com/go-openapi/validate/spec.go @@ -169,9 +169,17 @@ func (s *SpecValidator) validateNonEmptyPathParamNames() *Result { func (s *SpecValidator) validateDuplicateOperationIDs() *Result { // OperationID, if specified, must be unique across the board + var analyzer *analysis.Spec + if s.expanded != nil { + // $ref are valid: we can analyze operations on an expanded spec + analyzer = analysis.New(s.expanded.Spec()) + } else { + // fallback on possible incomplete picture because of previous errors + analyzer = s.analyzer + } res := new(Result) known := make(map[string]int) - for _, v := range s.analyzer.OperationIDs() { + for _, v := range analyzer.OperationIDs() { if v != "" { known[v]++ } diff --git a/vendor/github.com/go-openapi/validate/values.go b/vendor/github.com/go-openapi/validate/values.go index 3e644aea8687..1a9371d1e59a 100644 --- a/vendor/github.com/go-openapi/validate/values.go +++ b/vendor/github.com/go-openapi/validate/values.go @@ -17,6 +17,7 @@ package validate import ( "fmt" "reflect" + "strings" "unicode/utf8" "github.com/go-openapi/errors" @@ -26,11 +27,17 @@ import ( // Enum validates if the data is a member of the enum func Enum(path, in string, data interface{}, enum interface{}) *errors.Validation { + return EnumCase(path, in, data, enum, true) +} + +// EnumCase validates if the data is a member of the enum and may respect case-sensitivity for strings +func EnumCase(path, in string, data interface{}, enum interface{}, caseSensitive bool) *errors.Validation { val := reflect.ValueOf(enum) if val.Kind() != reflect.Slice { return nil } + dataString := convertEnumCaseStringKind(data, caseSensitive) var values []interface{} for i := 0; i < val.Len(); i++ { ele := val.Index(i) @@ -39,6 +46,10 @@ func Enum(path, in string, data interface{}, enum interface{}) *errors.Validatio if reflect.DeepEqual(data, enumValue) { return nil } + enumString := convertEnumCaseStringKind(enumValue, caseSensitive) + if dataString != nil && enumString != nil && strings.EqualFold(*dataString, *enumString) { + return nil + } actualType := reflect.TypeOf(enumValue) if actualType == nil { // Safeguard. Frankly, I don't know how we may get a nil continue @@ -56,6 +67,21 @@ func Enum(path, in string, data interface{}, enum interface{}) *errors.Validatio return errors.EnumFail(path, in, data, values) } +// convertEnumCaseStringKind converts interface if it is kind of string and case insensitivity is set +func convertEnumCaseStringKind(value interface{}, caseSensitive bool) *string { + if caseSensitive { + return nil + } + + val := reflect.ValueOf(value) + if val.Kind() != reflect.String { + return nil + } + + str := fmt.Sprintf("%v", value) + return &str +} + // MinItems validates that there are at least n items in a slice func MinItems(path, in string, size, min int64) *errors.Validation { if size < min { diff --git a/vendor/github.com/imdario/mergo/README.md b/vendor/github.com/imdario/mergo/README.md index 02fc81e0626e..8b76f1fbf33a 100644 --- a/vendor/github.com/imdario/mergo/README.md +++ b/vendor/github.com/imdario/mergo/README.md @@ -13,7 +13,6 @@ It is ready for production use. [It is used in several projects by Docker, Googl [![Build Status][1]][2] [![Coverage Status][7]][8] [![Sourcegraph][9]][10] -[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fimdario%2Fmergo.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fimdario%2Fmergo?ref=badge_shield) [1]: https://travis-ci.org/imdario/mergo.png [2]: https://travis-ci.org/imdario/mergo @@ -28,7 +27,7 @@ It is ready for production use. [It is used in several projects by Docker, Googl ### Latest release -[Release v0.3.7](https://github.com/imdario/mergo/releases/tag/v0.3.7). +[Release v0.3.6](https://github.com/imdario/mergo/releases/tag/v0.3.6). ### Important note @@ -218,21 +217,6 @@ If I can help you, you have an idea or you are using Mergo in your projects, don Written by [Dario Castañé](http://dario.im). -## Top Contributors - -[![0](https://sourcerer.io/fame/imdario/imdario/mergo/images/0)](https://sourcerer.io/fame/imdario/imdario/mergo/links/0) -[![1](https://sourcerer.io/fame/imdario/imdario/mergo/images/1)](https://sourcerer.io/fame/imdario/imdario/mergo/links/1) -[![2](https://sourcerer.io/fame/imdario/imdario/mergo/images/2)](https://sourcerer.io/fame/imdario/imdario/mergo/links/2) -[![3](https://sourcerer.io/fame/imdario/imdario/mergo/images/3)](https://sourcerer.io/fame/imdario/imdario/mergo/links/3) -[![4](https://sourcerer.io/fame/imdario/imdario/mergo/images/4)](https://sourcerer.io/fame/imdario/imdario/mergo/links/4) -[![5](https://sourcerer.io/fame/imdario/imdario/mergo/images/5)](https://sourcerer.io/fame/imdario/imdario/mergo/links/5) -[![6](https://sourcerer.io/fame/imdario/imdario/mergo/images/6)](https://sourcerer.io/fame/imdario/imdario/mergo/links/6) -[![7](https://sourcerer.io/fame/imdario/imdario/mergo/images/7)](https://sourcerer.io/fame/imdario/imdario/mergo/links/7) - - ## License [BSD 3-Clause](http://opensource.org/licenses/BSD-3-Clause) license, as [Go language](http://golang.org/LICENSE). - - -[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fimdario%2Fmergo.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fimdario%2Fmergo?ref=badge_large) diff --git a/vendor/github.com/imdario/mergo/map.go b/vendor/github.com/imdario/mergo/map.go index 3f5afa83a13c..6ea38e636b64 100644 --- a/vendor/github.com/imdario/mergo/map.go +++ b/vendor/github.com/imdario/mergo/map.go @@ -72,7 +72,6 @@ func deepMap(dst, src reflect.Value, visited map[uintptr]*visit, depth int, conf case reflect.Struct: srcMap := src.Interface().(map[string]interface{}) for key := range srcMap { - config.overwriteWithEmptyValue = true srcValue := srcMap[key] fieldName := changeInitialCase(key, unicode.ToUpper) dstElement := dst.FieldByName(fieldName) diff --git a/vendor/github.com/imdario/mergo/merge.go b/vendor/github.com/imdario/mergo/merge.go index f8de6c54305a..44f70a89d919 100644 --- a/vendor/github.com/imdario/mergo/merge.go +++ b/vendor/github.com/imdario/mergo/merge.go @@ -26,10 +26,9 @@ func hasExportedField(dst reflect.Value) (exported bool) { } type Config struct { - Overwrite bool - AppendSlice bool - Transformers Transformers - overwriteWithEmptyValue bool + Overwrite bool + AppendSlice bool + Transformers Transformers } type Transformers interface { @@ -41,8 +40,6 @@ type Transformers interface { // short circuiting on recursive types. func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, config *Config) (err error) { overwrite := config.Overwrite - overwriteWithEmptySrc := config.overwriteWithEmptyValue - config.overwriteWithEmptyValue = false if !src.IsValid() { return @@ -77,7 +74,7 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co } } } else { - if dst.CanSet() && (!isEmptyValue(src) || overwriteWithEmptySrc) && (overwrite || isEmptyValue(dst)) { + if dst.CanSet() && !isEmptyValue(src) && (overwrite || isEmptyValue(dst)) { dst.Set(src) } } @@ -128,7 +125,7 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co dstSlice = reflect.ValueOf(dstElement.Interface()) } - if (!isEmptyValue(src) || overwriteWithEmptySrc) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice { + if !isEmptyValue(src) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice { dstSlice = srcSlice } else if config.AppendSlice { if srcSlice.Type() != dstSlice.Type() { @@ -139,7 +136,7 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co dst.SetMapIndex(key, dstSlice) } } - if dstElement.IsValid() && !isEmptyValue(dstElement) && (reflect.TypeOf(srcElement.Interface()).Kind() == reflect.Map || reflect.TypeOf(srcElement.Interface()).Kind() == reflect.Slice) { + if dstElement.IsValid() && reflect.TypeOf(srcElement.Interface()).Kind() == reflect.Map { continue } @@ -154,7 +151,7 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co if !dst.CanSet() { break } - if (!isEmptyValue(src) || overwriteWithEmptySrc) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice { + if !isEmptyValue(src) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice { dst.Set(src) } else if config.AppendSlice { if src.Type() != dst.Type() { @@ -194,7 +191,7 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co return } default: - if dst.CanSet() && (!isEmptyValue(src) || overwriteWithEmptySrc) && (overwrite || isEmptyValue(dst)) { + if dst.CanSet() && !isEmptyValue(src) && (overwrite || isEmptyValue(dst)) { dst.Set(src) } } diff --git a/vendor/github.com/rancher/dynamiclistener/factory/ca.go b/vendor/github.com/rancher/dynamiclistener/factory/ca.go index cc3380f7af79..5dfa86338384 100644 --- a/vendor/github.com/rancher/dynamiclistener/factory/ca.go +++ b/vendor/github.com/rancher/dynamiclistener/factory/ca.go @@ -59,16 +59,7 @@ func loadCA() (*x509.Certificate, crypto.Signer, error) { return LoadCerts("./certs/ca.pem", "./certs/ca.key") } -func LoadCerts(certFile, keyFile string) (*x509.Certificate, crypto.Signer, error) { - caPem, err := ioutil.ReadFile(certFile) - if err != nil { - return nil, nil, err - } - caKey, err := ioutil.ReadFile(keyFile) - if err != nil { - return nil, nil, err - } - +func LoadCA(caPem, caKey []byte) (*x509.Certificate, crypto.Signer, error) { key, err := cert.ParsePrivateKeyPEM(caKey) if err != nil { return nil, nil, err @@ -85,3 +76,16 @@ func LoadCerts(certFile, keyFile string) (*x509.Certificate, crypto.Signer, erro return cert, signer, nil } + +func LoadCerts(certFile, keyFile string) (*x509.Certificate, crypto.Signer, error) { + caPem, err := ioutil.ReadFile(certFile) + if err != nil { + return nil, nil, err + } + caKey, err := ioutil.ReadFile(keyFile) + if err != nil { + return nil, nil, err + } + + return LoadCA(caPem, caKey) +} diff --git a/vendor/github.com/rancher/dynamiclistener/factory/gen.go b/vendor/github.com/rancher/dynamiclistener/factory/gen.go index cbe34fe30753..ddd5b6df727d 100644 --- a/vendor/github.com/rancher/dynamiclistener/factory/gen.go +++ b/vendor/github.com/rancher/dynamiclistener/factory/gen.go @@ -10,27 +10,37 @@ import ( "encoding/hex" "encoding/pem" "net" + "regexp" "sort" "strings" "github.com/rancher/dynamiclistener/cert" + "github.com/sirupsen/logrus" v1 "k8s.io/api/core/v1" ) const ( cnPrefix = "listener.cattle.io/cn-" - static = "listener.cattle.io/static" + Static = "listener.cattle.io/static" hashKey = "listener.cattle.io/hash" ) +var ( + cnRegexp = regexp.MustCompile("^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$") +) + type TLS struct { CACert *x509.Certificate CAKey crypto.Signer CN string Organization []string + FilterCN func(...string) []string } func cns(secret *v1.Secret) (cns []string) { + if secret == nil { + return nil + } for k, v := range secret.Annotations { if strings.HasPrefix(k, cnPrefix) { cns = append(cns, v) @@ -61,8 +71,23 @@ func collectCNs(secret *v1.Secret) (domains []string, ips []net.IP, hash string, return } -func (t *TLS) Merge(secret, other *v1.Secret) (*v1.Secret, bool, error) { - return t.AddCN(secret, cns(other)...) +func (t *TLS) Merge(target, additional *v1.Secret) (*v1.Secret, bool, error) { + return t.AddCN(target, cns(additional)...) +} + +func (t *TLS) Refresh(secret *v1.Secret) (*v1.Secret, error) { + cns := cns(secret) + secret = secret.DeepCopy() + secret.Annotations = map[string]string{} + secret, _, err := t.AddCN(secret, cns...) + return secret, err +} + +func (t *TLS) Filter(cn ...string) []string { + if t.FilterCN == nil { + return cn + } + return t.FilterCN(cn...) } func (t *TLS) AddCN(secret *v1.Secret, cn ...string) (*v1.Secret, bool, error) { @@ -70,10 +95,17 @@ func (t *TLS) AddCN(secret *v1.Secret, cn ...string) (*v1.Secret, bool, error) { err error ) - if !NeedsUpdate(secret, cn...) { + cn = t.Filter(cn...) + + if !NeedsUpdate(0, secret, cn...) { return secret, false, nil } + secret = secret.DeepCopy() + if secret == nil { + secret = &v1.Secret{} + } + secret = populateCN(secret, cn...) privateKey, err := getPrivateKey(secret) @@ -116,18 +148,29 @@ func populateCN(secret *v1.Secret, cn ...string) *v1.Secret { secret.Annotations = map[string]string{} } for _, cn := range cn { - secret.Annotations[cnPrefix+cn] = cn + if cnRegexp.MatchString(cn) { + secret.Annotations[cnPrefix+cn] = cn + } else { + logrus.Errorf("dropping invalid CN: %s", cn) + } } return secret } -func NeedsUpdate(secret *v1.Secret, cn ...string) bool { - if secret.Annotations[static] == "true" { +func NeedsUpdate(maxSANs int, secret *v1.Secret, cn ...string) bool { + if secret == nil { + return true + } + + if secret.Annotations[Static] == "true" { return false } for _, cn := range cn { if secret.Annotations[cnPrefix+cn] == "" { + if maxSANs > 0 && len(cns(secret)) >= maxSANs { + return false + } return true } } diff --git a/vendor/github.com/rancher/dynamiclistener/go.mod b/vendor/github.com/rancher/dynamiclistener/go.mod index f08bac29eb2a..d9465edf2a68 100644 --- a/vendor/github.com/rancher/dynamiclistener/go.mod +++ b/vendor/github.com/rancher/dynamiclistener/go.mod @@ -3,9 +3,9 @@ module github.com/rancher/dynamiclistener go 1.12 require ( - github.com/rancher/wrangler v0.1.4 - github.com/rancher/wrangler-api v0.2.0 - github.com/sirupsen/logrus v1.4.1 - k8s.io/api v0.0.0-20190409021203-6e4e0e4f393b - k8s.io/apimachinery v0.0.0-20190404173353-6a84e37a896d + github.com/rancher/wrangler v0.6.2-0.20200721203632-787d93e49342 + github.com/sirupsen/logrus v1.4.2 + golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975 + k8s.io/api v0.18.0 + k8s.io/apimachinery v0.18.0 ) diff --git a/vendor/github.com/rancher/dynamiclistener/go.sum b/vendor/github.com/rancher/dynamiclistener/go.sum index b9402752239e..ce4849a5ccd7 100644 --- a/vendor/github.com/rancher/dynamiclistener/go.sum +++ b/vendor/github.com/rancher/dynamiclistener/go.sum @@ -1,132 +1,599 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +github.com/360EntSecGroup-Skylar/excelize v1.4.1/go.mod h1:vnax29X2usfl7HHkBrX5EvSCJcmH3dT9luvxzu8iGAE= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= 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/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/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/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +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= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.15+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustmop/soup v1.1.2-0.20190516214245-38228baa104e/go.mod h1:CgNC6SGbT+Xb8wGGvzilttZL1mc5sQ/5KkcxsZttMIk= +github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +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/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.5.0+incompatible h1:ouOWdg56aJriqS0huScTkVXPC5IcNrDCXZ6OoTAWu7M= +github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= +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/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= +github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= +github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= +github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= +github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= +github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= +github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= +github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= +github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= +github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= +github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= +github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= +github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= +github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= +github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= +github.com/go-openapi/validate v0.19.8/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef h1:veQD95Isof8w9/WXiA+pa3tz3fJXkt5B7QaRBrM62gk= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.0.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= +github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8= +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/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-containerregistry v0.0.0-20190617215043-876b8855d23c/go.mod h1:yZAFP63pRshzrEYLXLGPmUt0Ay+2zdjmMN1loCnRLUk= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/googleapis/gnostic v0.0.0-20170426233943-68f4ded48ba9/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.2.0 h1:l6N3VoaVzTncYYW+9yOz2LJJammFZGBO13sqgEhpy9g= -github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.3.1 h1:WeAefnSUHlBb0iJKwxFDZdbfGwkd7xRNuV+IpXMJhYk= +github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= +github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/jetstack/cert-manager v0.7.2/go.mod h1:nbddmhjWxYGt04bxvwVGUSeLhZ2PCyNvd7MpXdq+yWY= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46Ok= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/knative/build v0.6.0/go.mod h1:/sU74ZQkwlYA5FwYDJhYTy61i/Kn+5eWfln2jDbw3Qo= -github.com/knative/pkg v0.0.0-20190514205332-5e4512dcb2ca/go.mod h1:7Ijfhw7rfB+H9VtosIsDYvZQ+qYTz7auK3fHW/5z4ww= -github.com/knative/serving v0.6.1/go.mod h1:ljvMfwQy2qanaM/8xnBSK4Mz3Vv2NawC2fo5kFRJS1A= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= +github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= -github.com/mattbaird/jsonpatch v0.0.0-20171005235357-81af80346b1a/go.mod h1:M1qoD/MqPgTZIk0EWKB38wE28ACRfVcn+cU08jyArI0= +github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +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/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.4.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0 h1:JAKSXpt1YjtLA7YpPiqO9ss6sNXEsPfSGdwN0UHqzrw= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.3.0/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.8.1 h1:C5Dqfs/LeauYDX0jJXIe2SWmwCbGzx9yF8C8xy3Lh34= +github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/paulmach/orb v0.1.3/go.mod h1:VFlX/8C+IQ1p6FTRRKzKoOPJnvEtA5G0Veuqwbu//Vk= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rancher/wrangler v0.1.4 h1:bdzBw4H9JKQhXPBPNp4eHbmrkA24+VII865VLiVWcw8= -github.com/rancher/wrangler v0.1.4/go.mod h1:EYP7cqpg42YqElaCm+U9ieSrGQKAXxUH5xsr+XGpWyE= -github.com/rancher/wrangler-api v0.2.0 h1:VR7hLNnDrKykKLqthtwZ58pDDtUa9ijSNToPaJLEkWc= -github.com/rancher/wrangler-api v0.2.0/go.mod h1:zTPdNLZO07KvRaVOx6XQbKBSV55Fnn4s7nqmrMPJqd8= -github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/qri-io/starlib v0.4.2-0.20200213133954-ff2e8cd5ef8d/go.mod h1:7DPO4domFU579Ga6E61sB9VFNaniPVwJP5C4bBCu3wA= +github.com/rancher/lasso v0.0.0-20200515155337-a34e1e26ad91 h1:p4VVl0tr6YAeUILFMCn+0DKzbUOS0ah9biSsL7Sy6S4= +github.com/rancher/lasso v0.0.0-20200515155337-a34e1e26ad91/go.mod h1:G6Vv2aj6xB2YjTVagmu4NkhBvbE8nBcGykHRENH6arI= +github.com/rancher/wrangler v0.6.2-0.20200721203632-787d93e49342 h1:uV30QVtfowET6yuTdW2shqoliWmcqxKLeaKgC7hj7Is= +github.com/rancher/wrangler v0.6.2-0.20200721203632-787d93e49342/go.mod h1:GSBsgNCMgSgpTXoyto5e35lTm5akYQVPzse5q3/rZ4w= +github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +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 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/soheilhy/cmux v0.1.3/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff h1:VARhShG49tiji6mdRNp7JTNDtJ0FhuprF93GBQ37xGU= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.2.3-0.20181224173747-660f15d67dbb/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/tektoncd/pipeline v0.4.0/go.mod h1:IZzJdiX9EqEMuUcgdnElozdYYRh0/ZRC+NKMLj1K3Yw= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= +github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8= +github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.starlark.net v0.0.0-20190528202925-30ae18b8564f/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg= +go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= +go.uber.org/atomic v0.0.0-20181018215023-8dc6146f7569/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v0.0.0-20180122172545-ddea229ff1df/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v0.0.0-20180814183419-67bc79d13d15/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-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-20200220183623-bac4c82f6975 h1:/Tl7pH94bvbAAHBdZJT947M/+gp0+CqQXDtMRC0fseo= +golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180112015858-5ccada7d0a7b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a h1:tImsplftrFpALCYumobsd0K86vlAs/eXGFms2txfJfA= -golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 h1:rjwSpXsdiK0dV8/Naq3kAw9ymfAeJIyd0upUIElB+lI= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33 h1:I6FyU15t786LL7oL/hn43zqTuEGr4PN7F4XJ1p4E3Y8= +golang.org/x/sys v0.0.0-20180117170059-2c42eef0765b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7 h1:HmbHVPwrPEKPGLAcHSrMe6+hqSUlvZU0rab6x5EXfGU= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20171227012246-e19ae1496984/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 h1:/atklqdjdhuosWIl6AIbOeHJjicWYPqR9bpxqxYG2pA= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gomodules.xyz/jsonpatch/v2 v2.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= +gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +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 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.0.0/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -k8s.io/api v0.0.0-20190409021203-6e4e0e4f393b h1:aBGgKJUM9Hk/3AE8WaZIApnTxG35kbuQba2w+SXqezo= -k8s.io/api v0.0.0-20190409021203-6e4e0e4f393b/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= -k8s.io/apiextensions-apiserver v0.0.0-20190409022649-727a075fdec8/go.mod h1:IxkesAMoaCRoLrPJdZNZUQp9NfZnzqaVzLhb2VEQzXE= -k8s.io/apimachinery v0.0.0-20190404173353-6a84e37a896d h1:Jmdtdt1ZnoGfWWIIik61Z7nKYgO3J+swQJtPYsP9wHA= -k8s.io/apimachinery v0.0.0-20190404173353-6a84e37a896d/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= -k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible h1:U5Bt+dab9K8qaUmXINrkXO135kA11/i5Kg1RUydgaMQ= -k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= -k8s.io/code-generator v0.0.0-20190311093542-50b561225d70/go.mod h1:MYiN+ZJZ9HkETbgVZdWw2AsuAi9PZ4V80cwfuf2axe8= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +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.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200121175148-a6ecf24a6d71/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +k8s.io/api v0.0.0-20190918155943-95b840bb6a1f/go.mod h1:uWuOHnjmNrtQomJrvEBg0c0HRNyQ+8KTEERVsK0PW48= +k8s.io/api v0.0.0-20191214185829-ca1d04f8b0d3/go.mod h1:itOjKREfmUTvcjantxOsyYU5mbFsU7qUnyUuRfF5+5M= +k8s.io/api v0.17.2/go.mod h1:BS9fjjLc4CMuqfSO8vgbHPKMt5+SF0ET6u/RVDihTo4= +k8s.io/api v0.18.0 h1:lwYk8Vt7rsVTwjRU6pzEsa9YNhThbmbocQlKvNBB4EQ= +k8s.io/api v0.18.0/go.mod h1:q2HRQkfDzHMBZL9l/y9rH63PkQl4vae0xRT+8prbrK8= +k8s.io/apiextensions-apiserver v0.0.0-20190918161926-8f644eb6e783/go.mod h1:xvae1SZB3E17UpV59AWc271W/Ph25N+bjPyR63X6tPY= +k8s.io/apiextensions-apiserver v0.17.2/go.mod h1:4KdMpjkEjjDI2pPfBA15OscyNldHWdBCfsWMDWAmSTs= +k8s.io/apiextensions-apiserver v0.18.0/go.mod h1:18Cwn1Xws4xnWQNC00FLq1E350b9lUF+aOdIWDOZxgo= +k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655/go.mod h1:nL6pwRT8NgfF8TT68DBI8uEePRt89cSvoXUVqbkWHq4= +k8s.io/apimachinery v0.0.0-20191214185652-442f8fb2f03a/go.mod h1:Ng1IY8TS7sC44KJxT/WUR6qFRfWwahYYYpNXyYRKOCY= +k8s.io/apimachinery v0.0.0-20191216025728-0ee8b4573e3a/go.mod h1:Ng1IY8TS7sC44KJxT/WUR6qFRfWwahYYYpNXyYRKOCY= +k8s.io/apimachinery v0.17.2/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= +k8s.io/apimachinery v0.18.0 h1:fuPfYpk3cs1Okp/515pAf0dNhL66+8zk8RLbSX+EgAE= +k8s.io/apimachinery v0.18.0/go.mod h1:9SnR/e11v5IbyPCGbvJViimtJ0SwHG4nfZFjU77ftcA= +k8s.io/apiserver v0.0.0-20190918160949-bfa5e2e684ad/go.mod h1:XPCXEwhjaFN29a8NldXA901ElnKeKLrLtREO9ZhFyhg= +k8s.io/apiserver v0.17.2/go.mod h1:lBmw/TtQdtxvrTk0e2cgtOxHizXI+d0mmGQURIHQZlo= +k8s.io/apiserver v0.18.0/go.mod h1:3S2O6FeBBd6XTo0njUrLxiqk8GNy6wWOftjhJcXYnjw= +k8s.io/cli-runtime v0.0.0-20191214191754-e6dc6d5c8724/go.mod h1:wzlq80lvjgHW9if6MlE4OIGC86MDKsy5jtl9nxz/IYY= +k8s.io/cli-runtime v0.17.2/go.mod h1:aa8t9ziyQdbkuizkNLAw3qe3srSyWh9zlSB7zTqRNPI= +k8s.io/client-go v0.0.0-20190918160344-1fbdaa4c8d90/go.mod h1:J69/JveO6XESwVgG53q3Uz5OSfgsv4uxpScmmyYOOlk= +k8s.io/client-go v0.0.0-20191214190045-a32a6f7a3052/go.mod h1:tAaoc/sYuIL0+njJefSAmE28CIcxyaFV4kbIujBlY2s= +k8s.io/client-go v0.0.0-20191219150334-0b8da7416048/go.mod h1:ZEe8ZASDUAuqVGJ+UN0ka0PfaR+b6a6E1PGsSNZRui8= +k8s.io/client-go v0.17.2/go.mod h1:QAzRgsa0C2xl4/eVpeVAZMvikCn8Nm81yqVx3Kk9XYI= +k8s.io/client-go v0.18.0 h1:yqKw4cTUQraZK3fcVCMeSa+lqKwcjZ5wtcOIPnxQno4= +k8s.io/client-go v0.18.0/go.mod h1:uQSYDYs4WhVZ9i6AIoEZuwUggLVEF64HOD37boKAtF8= +k8s.io/code-generator v0.0.0-20190912054826-cd179ad6a269/go.mod h1:V5BD6M4CyaN5m+VthcclXWsVcT1Hu+glwa1bi3MIsyE= +k8s.io/code-generator v0.0.0-20191214185510-0b9b3c99f9f2/go.mod h1:BjGKcoq1MRUmcssvHiSxodCco1T6nVIt4YeCT5CMSao= +k8s.io/code-generator v0.17.2/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= +k8s.io/code-generator v0.18.0/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc= +k8s.io/component-base v0.0.0-20190918160511-547f6c5d7090/go.mod h1:933PBGtQFJky3TEwYx4aEPZ4IxqhWh3R6DCmzqIn1hA= +k8s.io/component-base v0.0.0-20191214190519-d868452632e2/go.mod h1:wupxkh1T/oUDqyTtcIjiEfpbmIHGm8By/vqpSKC6z8c= +k8s.io/component-base v0.17.2/go.mod h1:zMPW3g5aH7cHJpKYQ/ZsGMcgbsA/VyhEugF3QT1awLs= +k8s.io/component-base v0.18.0/go.mod h1:u3BCg0z1uskkzrnAKFzulmYaEpZF7XC9Pf/uFyb1v2c= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20190327210449-e17681d19d3a/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0 h1:0VPpR+sizsiivjIfIAQH/rl8tan6jvWkS7lU+0di3lE= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/kube-openapi v0.0.0-20190502190224-411b2483e503/go.mod h1:iU+ZGYsNlvU9XKUSso6SQfKTCCw7lFduMZy26Mgr2Fw= -k8s.io/utils v0.0.0-20190506122338-8fab8cb257d5 h1:VBM/0P5TWxwk+Nw6Z+lAw3DKgO76g90ETOiA6rfLV1Y= -k8s.io/utils v0.0.0-20190506122338-8fab8cb257d5/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -sigs.k8s.io/structured-merge-diff v0.0.0-20190426204423-ea680f03cc65/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= +k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/kube-aggregator v0.18.0/go.mod h1:ateewQ5QbjMZF/dihEFXwaEwoA4v/mayRvzfmvb6eqI= +k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c h1:/KUFqjjqAcY4Us6luF5RDNZ16KJtb49HfR3ZHB9qYXM= +k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= +k8s.io/kubectl v0.0.0-20191219154910-1528d4eea6dd/go.mod h1:9ehGcuUGjXVZh0qbYSB0vvofQw2JQe6c6cO0k4wu/Oo= +k8s.io/metrics v0.0.0-20191214191643-6b1944c9f765/go.mod h1:5V7rewilItwK0cz4nomU0b3XCcees2Ka5EBYWS1HBeM= +k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89 h1:d4vVOjXm687F1iLSP2q3lyPPuyvTUt3aVoBpi2DqRsU= +k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= +modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= +modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= +modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= +modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= +sigs.k8s.io/cli-utils v0.16.0/go.mod h1:9Jqm9K2W6ShhCxsEuaz6HSRKKOXigPUx3ZfypGgxBLY= +sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns= +sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= +sigs.k8s.io/kustomize/kyaml v0.4.0/go.mod h1:XJL84E6sOFeNrQ7CADiemc1B0EjIxHo3OhW4o1aJYNw= +sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +sigs.k8s.io/structured-merge-diff v0.0.0-20190817042607-6149e4549fca/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA= +sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06 h1:zD2IemQ4LmOcAumeiyDWXKUI2SO0NYDe3H6QGvPOVgU= +sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E= +sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= +sigs.k8s.io/testing_frameworks v0.1.2/go.mod h1:ToQrwSC3s8Xf/lADdZp3Mktcql9CG0UAmdJG9th5i0w= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc/go.mod h1:so/NYdZXCz+E3ZpW0uAoCj6uzU2+8OWDFv/HxUSs7kI= diff --git a/vendor/github.com/rancher/dynamiclistener/listener.go b/vendor/github.com/rancher/dynamiclistener/listener.go index f3e84f3d2ec1..54b3fed7b386 100644 --- a/vendor/github.com/rancher/dynamiclistener/listener.go +++ b/vendor/github.com/rancher/dynamiclistener/listener.go @@ -1,6 +1,7 @@ package dynamiclistener import ( + "context" "crypto" "crypto/tls" "crypto/x509" @@ -8,6 +9,7 @@ import ( "net/http" "strings" "sync" + "time" "github.com/rancher/dynamiclistener/factory" "github.com/sirupsen/logrus" @@ -19,15 +21,15 @@ type TLSStorage interface { Update(secret *v1.Secret) error } -type SetFactory interface { - SetFactory(tls *factory.TLS) +type TLSFactory interface { + Refresh(secret *v1.Secret) (*v1.Secret, error) + AddCN(secret *v1.Secret, cn ...string) (*v1.Secret, bool, error) + Merge(target *v1.Secret, additional *v1.Secret) (*v1.Secret, bool, error) + Filter(cn ...string) []string } -type Config struct { - CN string - Organization []string - TLSConfig tls.Config - SANs []string +type SetFactory interface { + SetFactory(tls TLSFactory) } func NewListener(l net.Listener, storage TLSStorage, caCert *x509.Certificate, caKey crypto.Signer, config Config) (net.Listener, http.Handler, error) { @@ -37,6 +39,9 @@ func NewListener(l net.Listener, storage TLSStorage, caCert *x509.Certificate, c if len(config.Organization) == 0 { config.Organization = []string{"dynamic"} } + if config.TLSConfig == nil { + config.TLSConfig = &tls.Config{} + } dynamicListener := &listener{ factory: &factory.TLS{ @@ -44,34 +49,169 @@ func NewListener(l net.Listener, storage TLSStorage, caCert *x509.Certificate, c CAKey: caKey, CN: config.CN, Organization: config.Organization, + FilterCN: allowDefaultSANs(config.SANs, config.FilterCN), }, Listener: l, storage: &nonNil{storage: storage}, sans: config.SANs, + maxSANs: config.MaxSANs, tlsConfig: config.TLSConfig, } + if dynamicListener.tlsConfig == nil { + dynamicListener.tlsConfig = &tls.Config{} + } dynamicListener.tlsConfig.GetCertificate = dynamicListener.getCertificate + if config.CloseConnOnCertChange { + if len(dynamicListener.tlsConfig.Certificates) == 0 { + dynamicListener.tlsConfig.NextProtos = []string{"http/1.1"} + } + dynamicListener.conns = map[int]*closeWrapper{} + } + if setter, ok := storage.(SetFactory); ok { setter.SetFactory(dynamicListener.factory) } - return tls.NewListener(dynamicListener, &dynamicListener.tlsConfig), dynamicListener.cacheHandler(), nil + if config.ExpirationDaysCheck == 0 { + config.ExpirationDaysCheck = 30 + } + + tlsListener := tls.NewListener(dynamicListener.WrapExpiration(config.ExpirationDaysCheck), dynamicListener.tlsConfig) + return tlsListener, dynamicListener.cacheHandler(), nil +} + +func allowDefaultSANs(sans []string, next func(...string) []string) func(...string) []string { + if next == nil { + return nil + } else if len(sans) == 0 { + return next + } + + sanMap := map[string]bool{} + for _, san := range sans { + sanMap[san] = true + } + + return func(s ...string) []string { + var ( + good []string + unknown []string + ) + for _, s := range s { + if sanMap[s] { + good = append(good, s) + } else { + unknown = append(unknown, s) + } + } + + return append(good, next(unknown...)...) + } +} + +type cancelClose struct { + cancel func() + net.Listener +} + +func (c *cancelClose) Close() error { + c.cancel() + return c.Listener.Close() +} + +type Config struct { + CN string + Organization []string + TLSConfig *tls.Config + SANs []string + MaxSANs int + ExpirationDaysCheck int + CloseConnOnCertChange bool + FilterCN func(...string) []string } type listener struct { sync.RWMutex net.Listener - factory *factory.TLS + conns map[int]*closeWrapper + connID int + connLock sync.Mutex + + factory TLSFactory storage TLSStorage version string - tlsConfig tls.Config + tlsConfig *tls.Config cert *tls.Certificate sans []string + maxSANs int init sync.Once } +func (l *listener) WrapExpiration(days int) net.Listener { + ctx, cancel := context.WithCancel(context.Background()) + go func() { + time.Sleep(5 * time.Minute) + + for { + wait := 6 * time.Hour + if err := l.checkExpiration(days); err != nil { + logrus.Errorf("failed to check and refresh dynamic cert: %v", err) + wait = 5 + time.Minute + } + select { + case <-ctx.Done(): + return + case <-time.After(wait): + } + } + }() + + return &cancelClose{ + cancel: cancel, + Listener: l, + } +} + +func (l *listener) checkExpiration(days int) error { + l.Lock() + defer l.Unlock() + + if days == 0 { + return nil + } + + if l.cert == nil { + return nil + } + + secret, err := l.storage.Get() + if err != nil { + return err + } + + cert, err := tls.X509KeyPair(secret.Data[v1.TLSCertKey], secret.Data[v1.TLSPrivateKeyKey]) + if err != nil { + return err + } + + certParsed, err := x509.ParseCertificate(cert.Certificate[0]) + if err != nil { + return err + } + + if time.Now().UTC().Add(time.Hour * 24 * time.Duration(days)).After(certParsed.NotAfter) { + secret, err := l.factory.Refresh(secret) + if err != nil { + return err + } + return l.storage.Update(secret) + } + + return nil +} + func (l *listener) Accept() (net.Conn, error) { l.init.Do(func() { if len(l.sans) > 0 { @@ -97,13 +237,49 @@ func (l *listener) Accept() (net.Conn, error) { if !strings.Contains(host, ":") { if err := l.updateCert(host); err != nil { - logrus.Infof("failed to create TLS cert for: %s", host) + logrus.Infof("failed to create TLS cert for: %s, %v", host, err) } } + if l.conns != nil { + conn = l.wrap(conn) + } + return conn, nil } +func (l *listener) wrap(conn net.Conn) net.Conn { + l.connLock.Lock() + defer l.connLock.Unlock() + l.connID++ + + wrapper := &closeWrapper{ + Conn: conn, + id: l.connID, + l: l, + } + l.conns[l.connID] = wrapper + + return wrapper +} + +type closeWrapper struct { + net.Conn + id int + l *listener +} + +func (c *closeWrapper) close() error { + delete(c.l.conns, c.id) + return c.Conn.Close() +} + +func (c *closeWrapper) Close() error { + c.l.connLock.Lock() + defer c.l.connLock.Unlock() + return c.close() +} + func (l *listener) getCertificate(hello *tls.ClientHelloInfo) (*tls.Certificate, error) { if hello.ServerName != "" { if err := l.updateCert(hello.ServerName); err != nil { @@ -115,6 +291,11 @@ func (l *listener) getCertificate(hello *tls.ClientHelloInfo) (*tls.Certificate, } func (l *listener) updateCert(cn ...string) error { + cn = l.factory.Filter(cn...) + if len(cn) == 0 { + return nil + } + l.RLock() defer l.RUnlock() @@ -123,7 +304,7 @@ func (l *listener) updateCert(cn ...string) error { return err } - if !factory.NeedsUpdate(secret, cn...) { + if !factory.NeedsUpdate(l.maxSANs, secret, cn...) { return nil } @@ -143,6 +324,13 @@ func (l *listener) updateCert(cn ...string) error { } // clear version to force cert reload l.version = "" + if l.conns != nil { + l.connLock.Lock() + for _, conn := range l.conns { + _ = conn.close() + } + l.connLock.Unlock() + } } return nil @@ -179,6 +367,7 @@ func (l *listener) loadCert() (*tls.Certificate, error) { } l.cert = &cert + l.version = secret.ResourceVersion return l.cert, nil } @@ -191,6 +380,12 @@ func (l *listener) cacheHandler() http.Handler { ip := net.ParseIP(h) if len(ip) > 0 { + for _, v := range req.Header["User-Agent"] { + if strings.Contains(strings.ToLower(v), "mozilla") { + return + } + } + l.updateCert(h) } }) diff --git a/vendor/github.com/rancher/dynamiclistener/redirect.go b/vendor/github.com/rancher/dynamiclistener/redirect.go index 3987172ff9c5..76ff14424be5 100644 --- a/vendor/github.com/rancher/dynamiclistener/redirect.go +++ b/vendor/github.com/rancher/dynamiclistener/redirect.go @@ -11,8 +11,10 @@ import ( func HTTPRedirect(next http.Handler) http.Handler { return http.HandlerFunc( func(rw http.ResponseWriter, r *http.Request) { - if r.Header.Get("x-Forwarded-Proto") == "https" || + if r.TLS != nil || + r.Header.Get("x-Forwarded-Proto") == "https" || r.Header.Get("x-Forwarded-Proto") == "wss" || + strings.HasPrefix(r.URL.Path, "/.well-known/") || strings.HasPrefix(r.URL.Path, "/ping") || strings.HasPrefix(r.URL.Path, "/health") { next.ServeHTTP(rw, r) diff --git a/vendor/github.com/rancher/dynamiclistener/storage/file/file.go b/vendor/github.com/rancher/dynamiclistener/storage/file/file.go index ba738bcdbe44..06729446b224 100644 --- a/vendor/github.com/rancher/dynamiclistener/storage/file/file.go +++ b/vendor/github.com/rancher/dynamiclistener/storage/file/file.go @@ -39,4 +39,3 @@ func (s *storage) Update(secret *v1.Secret) error { return json.NewEncoder(f).Encode(secret) } - diff --git a/vendor/github.com/rancher/dynamiclistener/storage/kubernetes/ca.go b/vendor/github.com/rancher/dynamiclistener/storage/kubernetes/ca.go new file mode 100644 index 000000000000..5e5e9f176ad0 --- /dev/null +++ b/vendor/github.com/rancher/dynamiclistener/storage/kubernetes/ca.go @@ -0,0 +1,59 @@ +package kubernetes + +import ( + "crypto" + "crypto/x509" + + "github.com/rancher/dynamiclistener/factory" + v1controller "github.com/rancher/wrangler/pkg/generated/controllers/core/v1" + v1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +func LoadOrGenCA(secrets v1controller.SecretClient, namespace, name string) (*x509.Certificate, crypto.Signer, error) { + secret, err := getSecret(secrets, namespace, name) + if err != nil { + return nil, nil, err + } + return factory.LoadCA(secret.Data[v1.TLSCertKey], secret.Data[v1.TLSPrivateKeyKey]) +} + +func getSecret(secrets v1controller.SecretClient, namespace, name string) (*v1.Secret, error) { + s, err := secrets.Get(namespace, name, metav1.GetOptions{}) + if !errors.IsNotFound(err) { + return s, err + } + + if err := createAndStore(secrets, namespace, name); err != nil { + return nil, err + } + return secrets.Get(namespace, name, metav1.GetOptions{}) +} + +func createAndStore(secrets v1controller.SecretClient, namespace string, name string) error { + ca, cert, err := factory.GenCA() + if err != nil { + return err + } + + certPem, keyPem, err := factory.Marshal(ca, cert) + if err != nil { + return err + } + + secret := &v1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, + Namespace: namespace, + }, + Data: map[string][]byte{ + v1.TLSCertKey: certPem, + v1.TLSPrivateKeyKey: keyPem, + }, + Type: v1.SecretTypeTLS, + } + + secrets.Create(secret) + return nil +} diff --git a/vendor/github.com/rancher/dynamiclistener/storage/kubernetes/controller.go b/vendor/github.com/rancher/dynamiclistener/storage/kubernetes/controller.go index 0c91e7579b86..4216eb19e03d 100644 --- a/vendor/github.com/rancher/dynamiclistener/storage/kubernetes/controller.go +++ b/vendor/github.com/rancher/dynamiclistener/storage/kubernetes/controller.go @@ -6,19 +6,28 @@ import ( "time" "github.com/rancher/dynamiclistener" - "github.com/rancher/dynamiclistener/factory" - "github.com/rancher/wrangler-api/pkg/generated/controllers/core" - v1controller "github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1" + "github.com/rancher/wrangler/pkg/generated/controllers/core" + v1controller "github.com/rancher/wrangler/pkg/generated/controllers/core/v1" "github.com/rancher/wrangler/pkg/start" "github.com/sirupsen/logrus" v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/equality" "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) type CoreGetter func() *core.Factory +func Load(ctx context.Context, secrets v1controller.SecretController, namespace, name string, backing dynamiclistener.TLSStorage) dynamiclistener.TLSStorage { + storage := &storage{ + name: name, + namespace: namespace, + storage: backing, + ctx: ctx, + } + storage.init(secrets) + return storage +} + func New(ctx context.Context, core CoreGetter, namespace, name string, backing dynamiclistener.TLSStorage) dynamiclistener.TLSStorage { storage := &storage{ name: name, @@ -55,10 +64,10 @@ type storage struct { storage dynamiclistener.TLSStorage secrets v1controller.SecretClient ctx context.Context - tls *factory.TLS + tls dynamiclistener.TLSFactory } -func (s *storage) SetFactory(tls *factory.TLS) { +func (s *storage) SetFactory(tls dynamiclistener.TLSFactory) { s.tls = tls } @@ -122,7 +131,7 @@ func (s *storage) saveInK8s(secret *v1.Secret) (*v1.Secret, error) { } if existing, err := s.storage.Get(); err == nil && s.tls != nil { - if newSecret, updated, err := s.tls.Merge(secret, existing); err == nil && updated { + if newSecret, updated, err := s.tls.Merge(existing, secret); err == nil && updated { secret = newSecret } } @@ -132,9 +141,12 @@ func (s *storage) saveInK8s(secret *v1.Secret) (*v1.Secret, error) { return nil, err } - if equality.Semantic.DeepEqual(targetSecret.Annotations, secret.Annotations) && - equality.Semantic.DeepEqual(targetSecret.Data, secret.Data) { - return secret, nil + if newSecret, updated, err := s.tls.Merge(targetSecret, secret); err != nil { + return nil, err + } else if !updated { + return newSecret, nil + } else { + secret = newSecret } targetSecret.Annotations = secret.Annotations diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/clientset.go b/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/clientset.go deleted file mode 100644 index 08e2f9fe35ef..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/clientset.go +++ /dev/null @@ -1,97 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package versioned - -import ( - "fmt" - - helmv1 "github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1" - discovery "k8s.io/client-go/discovery" - rest "k8s.io/client-go/rest" - flowcontrol "k8s.io/client-go/util/flowcontrol" -) - -type Interface interface { - Discovery() discovery.DiscoveryInterface - HelmV1() helmv1.HelmV1Interface -} - -// Clientset contains the clients for groups. Each group has exactly one -// version included in a Clientset. -type Clientset struct { - *discovery.DiscoveryClient - helmV1 *helmv1.HelmV1Client -} - -// HelmV1 retrieves the HelmV1Client -func (c *Clientset) HelmV1() helmv1.HelmV1Interface { - return c.helmV1 -} - -// Discovery retrieves the DiscoveryClient -func (c *Clientset) Discovery() discovery.DiscoveryInterface { - if c == nil { - return nil - } - return c.DiscoveryClient -} - -// NewForConfig creates a new Clientset for the given config. -// If config's RateLimiter is not set and QPS and Burst are acceptable, -// NewForConfig will generate a rate-limiter in configShallowCopy. -func NewForConfig(c *rest.Config) (*Clientset, error) { - configShallowCopy := *c - if configShallowCopy.RateLimiter == nil && configShallowCopy.QPS > 0 { - if configShallowCopy.Burst <= 0 { - return nil, fmt.Errorf("burst is required to be greater than 0 when RateLimiter is not set and QPS is set to greater than 0") - } - configShallowCopy.RateLimiter = flowcontrol.NewTokenBucketRateLimiter(configShallowCopy.QPS, configShallowCopy.Burst) - } - var cs Clientset - var err error - cs.helmV1, err = helmv1.NewForConfig(&configShallowCopy) - if err != nil { - return nil, err - } - - cs.DiscoveryClient, err = discovery.NewDiscoveryClientForConfig(&configShallowCopy) - if err != nil { - return nil, err - } - return &cs, nil -} - -// NewForConfigOrDie creates a new Clientset for the given config and -// panics if there is an error in the config. -func NewForConfigOrDie(c *rest.Config) *Clientset { - var cs Clientset - cs.helmV1 = helmv1.NewForConfigOrDie(c) - - cs.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c) - return &cs -} - -// New creates a new Clientset for the given RESTClient. -func New(c rest.Interface) *Clientset { - var cs Clientset - cs.helmV1 = helmv1.New(c) - - cs.DiscoveryClient = discovery.NewDiscoveryClient(c) - return &cs -} diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/doc.go b/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/doc.go deleted file mode 100644 index 78439a3c1464..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -// This package has the automatically generated clientset. -package versioned diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/scheme/doc.go b/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/scheme/doc.go deleted file mode 100644 index 6bd144ec297a..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/scheme/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -// This package contains the scheme of the automatically generated clientset. -package scheme diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/scheme/register.go b/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/scheme/register.go deleted file mode 100644 index 337ab87a8e8d..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/scheme/register.go +++ /dev/null @@ -1,56 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package scheme - -import ( - helmv1 "github.com/rancher/helm-controller/pkg/apis/helm.cattle.io/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - schema "k8s.io/apimachinery/pkg/runtime/schema" - serializer "k8s.io/apimachinery/pkg/runtime/serializer" - utilruntime "k8s.io/apimachinery/pkg/util/runtime" -) - -var Scheme = runtime.NewScheme() -var Codecs = serializer.NewCodecFactory(Scheme) -var ParameterCodec = runtime.NewParameterCodec(Scheme) -var localSchemeBuilder = runtime.SchemeBuilder{ - helmv1.AddToScheme, -} - -// AddToScheme adds all types of this clientset into the given scheme. This allows composition -// of clientsets, like in: -// -// import ( -// "k8s.io/client-go/kubernetes" -// clientsetscheme "k8s.io/client-go/kubernetes/scheme" -// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" -// ) -// -// kclientset, _ := kubernetes.NewForConfig(c) -// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) -// -// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types -// correctly. -var AddToScheme = localSchemeBuilder.AddToScheme - -func init() { - v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"}) - utilruntime.Must(AddToScheme(Scheme)) -} diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/doc.go b/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/doc.go deleted file mode 100644 index 761c8c49d495..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -// This package has the automatically generated typed clients. -package v1 diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/generated_expansion.go b/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/generated_expansion.go deleted file mode 100644 index d99566ca57eb..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/generated_expansion.go +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package v1 - -type HelmChartExpansion interface{} diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/helm.cattle.io_client.go b/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/helm.cattle.io_client.go deleted file mode 100644 index ecf55d5b6599..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/helm.cattle.io_client.go +++ /dev/null @@ -1,89 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package v1 - -import ( - v1 "github.com/rancher/helm-controller/pkg/apis/helm.cattle.io/v1" - "github.com/rancher/helm-controller/pkg/generated/clientset/versioned/scheme" - rest "k8s.io/client-go/rest" -) - -type HelmV1Interface interface { - RESTClient() rest.Interface - HelmChartsGetter -} - -// HelmV1Client is used to interact with features provided by the helm.cattle.io group. -type HelmV1Client struct { - restClient rest.Interface -} - -func (c *HelmV1Client) HelmCharts(namespace string) HelmChartInterface { - return newHelmCharts(c, namespace) -} - -// NewForConfig creates a new HelmV1Client for the given config. -func NewForConfig(c *rest.Config) (*HelmV1Client, error) { - config := *c - if err := setConfigDefaults(&config); err != nil { - return nil, err - } - client, err := rest.RESTClientFor(&config) - if err != nil { - return nil, err - } - return &HelmV1Client{client}, nil -} - -// NewForConfigOrDie creates a new HelmV1Client for the given config and -// panics if there is an error in the config. -func NewForConfigOrDie(c *rest.Config) *HelmV1Client { - client, err := NewForConfig(c) - if err != nil { - panic(err) - } - return client -} - -// New creates a new HelmV1Client for the given RESTClient. -func New(c rest.Interface) *HelmV1Client { - return &HelmV1Client{c} -} - -func setConfigDefaults(config *rest.Config) error { - gv := v1.SchemeGroupVersion - config.GroupVersion = &gv - config.APIPath = "/apis" - config.NegotiatedSerializer = scheme.Codecs.WithoutConversion() - - if config.UserAgent == "" { - config.UserAgent = rest.DefaultKubernetesUserAgent() - } - - return nil -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *HelmV1Client) RESTClient() rest.Interface { - if c == nil { - return nil - } - return c.restClient -} diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/helmchart.go b/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/helmchart.go deleted file mode 100644 index 370eba3f7c57..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1/helmchart.go +++ /dev/null @@ -1,195 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package v1 - -import ( - "context" - "time" - - v1 "github.com/rancher/helm-controller/pkg/apis/helm.cattle.io/v1" - scheme "github.com/rancher/helm-controller/pkg/generated/clientset/versioned/scheme" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - rest "k8s.io/client-go/rest" -) - -// HelmChartsGetter has a method to return a HelmChartInterface. -// A group's client should implement this interface. -type HelmChartsGetter interface { - HelmCharts(namespace string) HelmChartInterface -} - -// HelmChartInterface has methods to work with HelmChart resources. -type HelmChartInterface interface { - Create(ctx context.Context, helmChart *v1.HelmChart, opts metav1.CreateOptions) (*v1.HelmChart, error) - Update(ctx context.Context, helmChart *v1.HelmChart, opts metav1.UpdateOptions) (*v1.HelmChart, error) - UpdateStatus(ctx context.Context, helmChart *v1.HelmChart, opts metav1.UpdateOptions) (*v1.HelmChart, error) - Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error - DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error - Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.HelmChart, error) - List(ctx context.Context, opts metav1.ListOptions) (*v1.HelmChartList, error) - Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) - Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.HelmChart, err error) - HelmChartExpansion -} - -// helmCharts implements HelmChartInterface -type helmCharts struct { - client rest.Interface - ns string -} - -// newHelmCharts returns a HelmCharts -func newHelmCharts(c *HelmV1Client, namespace string) *helmCharts { - return &helmCharts{ - client: c.RESTClient(), - ns: namespace, - } -} - -// Get takes name of the helmChart, and returns the corresponding helmChart object, and an error if there is any. -func (c *helmCharts) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.HelmChart, err error) { - result = &v1.HelmChart{} - err = c.client.Get(). - Namespace(c.ns). - Resource("helmcharts"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(ctx). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of HelmCharts that match those selectors. -func (c *helmCharts) List(ctx context.Context, opts metav1.ListOptions) (result *v1.HelmChartList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1.HelmChartList{} - err = c.client.Get(). - Namespace(c.ns). - Resource("helmcharts"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(ctx). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested helmCharts. -func (c *helmCharts) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - opts.Watch = true - return c.client.Get(). - Namespace(c.ns). - Resource("helmcharts"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch(ctx) -} - -// Create takes the representation of a helmChart and creates it. Returns the server's representation of the helmChart, and an error, if there is any. -func (c *helmCharts) Create(ctx context.Context, helmChart *v1.HelmChart, opts metav1.CreateOptions) (result *v1.HelmChart, err error) { - result = &v1.HelmChart{} - err = c.client.Post(). - Namespace(c.ns). - Resource("helmcharts"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(helmChart). - Do(ctx). - Into(result) - return -} - -// Update takes the representation of a helmChart and updates it. Returns the server's representation of the helmChart, and an error, if there is any. -func (c *helmCharts) Update(ctx context.Context, helmChart *v1.HelmChart, opts metav1.UpdateOptions) (result *v1.HelmChart, err error) { - result = &v1.HelmChart{} - err = c.client.Put(). - Namespace(c.ns). - Resource("helmcharts"). - Name(helmChart.Name). - VersionedParams(&opts, scheme.ParameterCodec). - Body(helmChart). - Do(ctx). - Into(result) - return -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *helmCharts) UpdateStatus(ctx context.Context, helmChart *v1.HelmChart, opts metav1.UpdateOptions) (result *v1.HelmChart, err error) { - result = &v1.HelmChart{} - err = c.client.Put(). - Namespace(c.ns). - Resource("helmcharts"). - Name(helmChart.Name). - SubResource("status"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(helmChart). - Do(ctx). - Into(result) - return -} - -// Delete takes name of the helmChart and deletes it. Returns an error if one occurs. -func (c *helmCharts) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { - return c.client.Delete(). - Namespace(c.ns). - Resource("helmcharts"). - Name(name). - Body(&opts). - Do(ctx). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *helmCharts) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { - var timeout time.Duration - if listOpts.TimeoutSeconds != nil { - timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Namespace(c.ns). - Resource("helmcharts"). - VersionedParams(&listOpts, scheme.ParameterCodec). - Timeout(timeout). - Body(&opts). - Do(ctx). - Error() -} - -// Patch applies the patch and returns the patched helmChart. -func (c *helmCharts) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.HelmChart, err error) { - result = &v1.HelmChart{} - err = c.client.Patch(pt). - Namespace(c.ns). - Resource("helmcharts"). - Name(name). - SubResource(subresources...). - VersionedParams(&opts, scheme.ParameterCodec). - Body(data). - Do(ctx). - Into(result) - return -} diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/factory.go b/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/factory.go index a77b70c221fb..6a0cdee4254a 100644 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/factory.go +++ b/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/factory.go @@ -19,28 +19,12 @@ limitations under the License. package helm import ( - "context" - "time" - - clientset "github.com/rancher/helm-controller/pkg/generated/clientset/versioned" - scheme "github.com/rancher/helm-controller/pkg/generated/clientset/versioned/scheme" - informers "github.com/rancher/helm-controller/pkg/generated/informers/externalversions" "github.com/rancher/wrangler/pkg/generic" - "github.com/rancher/wrangler/pkg/schemes" - "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/rest" ) -func init() { - scheme.AddToScheme(schemes.All) -} - type Factory struct { - synced bool - informerFactory informers.SharedInformerFactory - clientset clientset.Interface - controllerManager *generic.ControllerManager - threadiness map[schema.GroupVersionKind]int + *generic.Factory } func NewFactoryFromConfigOrDie(config *rest.Config) *Factory { @@ -61,66 +45,15 @@ func NewFactoryFromConfigWithNamespace(config *rest.Config, namespace string) (* }) } -type FactoryOptions struct { - Namespace string - Resync time.Duration -} +type FactoryOptions = generic.FactoryOptions func NewFactoryFromConfigWithOptions(config *rest.Config, opts *FactoryOptions) (*Factory, error) { - if opts == nil { - opts = &FactoryOptions{} - } - - cs, err := clientset.NewForConfig(config) - if err != nil { - return nil, err - } - - resync := opts.Resync - if resync == 0 { - resync = 2 * time.Hour - } - - if opts.Namespace == "" { - informerFactory := informers.NewSharedInformerFactory(cs, resync) - return NewFactory(cs, informerFactory), nil - } - - informerFactory := informers.NewSharedInformerFactoryWithOptions(cs, resync, informers.WithNamespace(opts.Namespace)) - return NewFactory(cs, informerFactory), nil -} - -func NewFactory(clientset clientset.Interface, informerFactory informers.SharedInformerFactory) *Factory { + f, err := generic.NewFactoryFromConfigWithOptions(config, opts) return &Factory{ - threadiness: map[schema.GroupVersionKind]int{}, - controllerManager: &generic.ControllerManager{}, - clientset: clientset, - informerFactory: informerFactory, - } -} - -func (c *Factory) Controllers() map[schema.GroupVersionKind]*generic.Controller { - return c.controllerManager.Controllers() -} - -func (c *Factory) SetThreadiness(gvk schema.GroupVersionKind, threadiness int) { - c.threadiness[gvk] = threadiness -} - -func (c *Factory) Sync(ctx context.Context) error { - c.informerFactory.Start(ctx.Done()) - c.informerFactory.WaitForCacheSync(ctx.Done()) - return nil -} - -func (c *Factory) Start(ctx context.Context, defaultThreadiness int) error { - if err := c.Sync(ctx); err != nil { - return err - } - - return c.controllerManager.Start(ctx, defaultThreadiness, c.threadiness) + Factory: f, + }, err } func (c *Factory) Helm() Interface { - return New(c.controllerManager, c.informerFactory.Helm(), c.clientset) + return New(c.ControllerFactory()) } diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/interface.go b/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/interface.go index 926b9f1c6966..e00f24e088c8 100644 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/interface.go +++ b/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/interface.go @@ -19,10 +19,8 @@ limitations under the License. package helm import ( - clientset "github.com/rancher/helm-controller/pkg/generated/clientset/versioned" v1 "github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/v1" - informers "github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io" - "github.com/rancher/wrangler/pkg/generic" + "github.com/rancher/lasso/pkg/controller" ) type Interface interface { @@ -30,21 +28,16 @@ type Interface interface { } type group struct { - controllerManager *generic.ControllerManager - informers informers.Interface - client clientset.Interface + controllerFactory controller.SharedControllerFactory } // New returns a new Interface. -func New(controllerManager *generic.ControllerManager, informers informers.Interface, - client clientset.Interface) Interface { +func New(controllerFactory controller.SharedControllerFactory) Interface { return &group{ - controllerManager: controllerManager, - informers: informers, - client: client, + controllerFactory: controllerFactory, } } func (g *group) V1() v1.Interface { - return v1.New(g.controllerManager, g.client.HelmV1(), g.informers.V1()) + return v1.New(g.controllerFactory) } diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/v1/helmchart.go b/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/v1/helmchart.go index 0650a6a4c9bc..cb31a287363d 100644 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/v1/helmchart.go +++ b/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/v1/helmchart.go @@ -23,9 +23,8 @@ import ( "time" v1 "github.com/rancher/helm-controller/pkg/apis/helm.cattle.io/v1" - clientset "github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1" - informers "github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/v1" - listers "github.com/rancher/helm-controller/pkg/generated/listers/helm.cattle.io/v1" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/apply" "github.com/rancher/wrangler/pkg/condition" "github.com/rancher/wrangler/pkg/generic" @@ -78,18 +77,22 @@ type HelmChartCache interface { type HelmChartIndexer func(obj *v1.HelmChart) ([]string, error) type helmChartController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.HelmChartsGetter - informer informers.HelmChartInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewHelmChartController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.HelmChartsGetter, informer informers.HelmChartInformer) HelmChartController { +func NewHelmChartController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) HelmChartController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &helmChartController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -136,12 +139,11 @@ func UpdateHelmChartDeepCopyOnChange(client HelmChartClient, obj *v1.HelmChart, } func (c *helmChartController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *helmChartController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *helmChartController) OnChange(ctx context.Context, name string, sync HelmChartHandler) { @@ -149,20 +151,19 @@ func (c *helmChartController) OnChange(ctx context.Context, name string, sync He } func (c *helmChartController) OnRemove(ctx context.Context, name string, sync HelmChartHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromHelmChartHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromHelmChartHandlerToHandler(sync))) } func (c *helmChartController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *helmChartController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *helmChartController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *helmChartController) GroupVersionKind() schema.GroupVersionKind { @@ -171,57 +172,75 @@ func (c *helmChartController) GroupVersionKind() schema.GroupVersionKind { func (c *helmChartController) Cache() HelmChartCache { return &helmChartCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *helmChartController) Create(obj *v1.HelmChart) (*v1.HelmChart, error) { - return c.clientGetter.HelmCharts(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.HelmChart{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *helmChartController) Update(obj *v1.HelmChart) (*v1.HelmChart, error) { - return c.clientGetter.HelmCharts(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.HelmChart{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *helmChartController) UpdateStatus(obj *v1.HelmChart) (*v1.HelmChart, error) { - return c.clientGetter.HelmCharts(obj.Namespace).UpdateStatus(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.HelmChart{} + return result, c.client.UpdateStatus(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *helmChartController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.HelmCharts(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *helmChartController) Get(namespace, name string, options metav1.GetOptions) (*v1.HelmChart, error) { - return c.clientGetter.HelmCharts(namespace).Get(context.TODO(), name, options) + result := &v1.HelmChart{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *helmChartController) List(namespace string, opts metav1.ListOptions) (*v1.HelmChartList, error) { - return c.clientGetter.HelmCharts(namespace).List(context.TODO(), opts) + result := &v1.HelmChartList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *helmChartController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.HelmCharts(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *helmChartController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.HelmChart, err error) { - return c.clientGetter.HelmCharts(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *helmChartController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.HelmChart, error) { + result := &v1.HelmChart{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type helmChartCache struct { - lister listers.HelmChartLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *helmChartCache) Get(namespace, name string) (*v1.HelmChart, error) { - return c.lister.HelmCharts(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.HelmChart), nil } -func (c *helmChartCache) List(namespace string, selector labels.Selector) ([]*v1.HelmChart, error) { - return c.lister.HelmCharts(namespace).List(selector) +func (c *helmChartCache) List(namespace string, selector labels.Selector) (ret []*v1.HelmChart, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.HelmChart)) + }) + + return ret, err } func (c *helmChartCache) AddIndexer(indexName string, indexer HelmChartIndexer) { diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/v1/interface.go b/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/v1/interface.go index 237b1b2bb9ac..7913bcab24f2 100644 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/v1/interface.go +++ b/vendor/github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/v1/interface.go @@ -20,30 +20,29 @@ package v1 import ( v1 "github.com/rancher/helm-controller/pkg/apis/helm.cattle.io/v1" - clientset "github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1" - informers "github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/v1" - "github.com/rancher/wrangler/pkg/generic" + "github.com/rancher/lasso/pkg/controller" + "github.com/rancher/wrangler/pkg/schemes" + "k8s.io/apimachinery/pkg/runtime/schema" ) +func init() { + schemes.Register(v1.AddToScheme) +} + type Interface interface { HelmChart() HelmChartController } -func New(controllerManager *generic.ControllerManager, client clientset.HelmV1Interface, - informers informers.Interface) Interface { +func New(controllerFactory controller.SharedControllerFactory) Interface { return &version{ - controllerManager: controllerManager, - client: client, - informers: informers, + controllerFactory: controllerFactory, } } type version struct { - controllerManager *generic.ControllerManager - informers informers.Interface - client clientset.HelmV1Interface + controllerFactory controller.SharedControllerFactory } func (c *version) HelmChart() HelmChartController { - return NewHelmChartController(v1.SchemeGroupVersion.WithKind("HelmChart"), c.controllerManager, c.client, c.informers.HelmCharts()) + return NewHelmChartController(schema.GroupVersionKind{Group: "helm.cattle.io", Version: "v1", Kind: "HelmChart"}, "helmcharts", true, c.controllerFactory) } diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/factory.go b/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/factory.go deleted file mode 100644 index 1f03994ee405..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/factory.go +++ /dev/null @@ -1,180 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package externalversions - -import ( - reflect "reflect" - sync "sync" - time "time" - - versioned "github.com/rancher/helm-controller/pkg/generated/clientset/versioned" - helmcattleio "github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io" - internalinterfaces "github.com/rancher/helm-controller/pkg/generated/informers/externalversions/internalinterfaces" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - schema "k8s.io/apimachinery/pkg/runtime/schema" - cache "k8s.io/client-go/tools/cache" -) - -// SharedInformerOption defines the functional option type for SharedInformerFactory. -type SharedInformerOption func(*sharedInformerFactory) *sharedInformerFactory - -type sharedInformerFactory struct { - client versioned.Interface - namespace string - tweakListOptions internalinterfaces.TweakListOptionsFunc - lock sync.Mutex - defaultResync time.Duration - customResync map[reflect.Type]time.Duration - - informers map[reflect.Type]cache.SharedIndexInformer - // startedInformers is used for tracking which informers have been started. - // This allows Start() to be called multiple times safely. - startedInformers map[reflect.Type]bool -} - -// WithCustomResyncConfig sets a custom resync period for the specified informer types. -func WithCustomResyncConfig(resyncConfig map[v1.Object]time.Duration) SharedInformerOption { - return func(factory *sharedInformerFactory) *sharedInformerFactory { - for k, v := range resyncConfig { - factory.customResync[reflect.TypeOf(k)] = v - } - return factory - } -} - -// WithTweakListOptions sets a custom filter on all listers of the configured SharedInformerFactory. -func WithTweakListOptions(tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerOption { - return func(factory *sharedInformerFactory) *sharedInformerFactory { - factory.tweakListOptions = tweakListOptions - return factory - } -} - -// WithNamespace limits the SharedInformerFactory to the specified namespace. -func WithNamespace(namespace string) SharedInformerOption { - return func(factory *sharedInformerFactory) *sharedInformerFactory { - factory.namespace = namespace - return factory - } -} - -// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces. -func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory { - return NewSharedInformerFactoryWithOptions(client, defaultResync) -} - -// NewFilteredSharedInformerFactory constructs a new instance of sharedInformerFactory. -// Listers obtained via this SharedInformerFactory will be subject to the same filters -// as specified here. -// Deprecated: Please use NewSharedInformerFactoryWithOptions instead -func NewFilteredSharedInformerFactory(client versioned.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory { - return NewSharedInformerFactoryWithOptions(client, defaultResync, WithNamespace(namespace), WithTweakListOptions(tweakListOptions)) -} - -// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options. -func NewSharedInformerFactoryWithOptions(client versioned.Interface, defaultResync time.Duration, options ...SharedInformerOption) SharedInformerFactory { - factory := &sharedInformerFactory{ - client: client, - namespace: v1.NamespaceAll, - defaultResync: defaultResync, - informers: make(map[reflect.Type]cache.SharedIndexInformer), - startedInformers: make(map[reflect.Type]bool), - customResync: make(map[reflect.Type]time.Duration), - } - - // Apply all options - for _, opt := range options { - factory = opt(factory) - } - - return factory -} - -// Start initializes all requested informers. -func (f *sharedInformerFactory) Start(stopCh <-chan struct{}) { - f.lock.Lock() - defer f.lock.Unlock() - - for informerType, informer := range f.informers { - if !f.startedInformers[informerType] { - go informer.Run(stopCh) - f.startedInformers[informerType] = true - } - } -} - -// WaitForCacheSync waits for all started informers' cache were synced. -func (f *sharedInformerFactory) WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool { - informers := func() map[reflect.Type]cache.SharedIndexInformer { - f.lock.Lock() - defer f.lock.Unlock() - - informers := map[reflect.Type]cache.SharedIndexInformer{} - for informerType, informer := range f.informers { - if f.startedInformers[informerType] { - informers[informerType] = informer - } - } - return informers - }() - - res := map[reflect.Type]bool{} - for informType, informer := range informers { - res[informType] = cache.WaitForCacheSync(stopCh, informer.HasSynced) - } - return res -} - -// InternalInformerFor returns the SharedIndexInformer for obj using an internal -// client. -func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internalinterfaces.NewInformerFunc) cache.SharedIndexInformer { - f.lock.Lock() - defer f.lock.Unlock() - - informerType := reflect.TypeOf(obj) - informer, exists := f.informers[informerType] - if exists { - return informer - } - - resyncPeriod, exists := f.customResync[informerType] - if !exists { - resyncPeriod = f.defaultResync - } - - informer = newFunc(f.client, resyncPeriod) - f.informers[informerType] = informer - - return informer -} - -// SharedInformerFactory provides shared informers for resources in all known -// API group versions. -type SharedInformerFactory interface { - internalinterfaces.SharedInformerFactory - ForResource(resource schema.GroupVersionResource) (GenericInformer, error) - WaitForCacheSync(stopCh <-chan struct{}) map[reflect.Type]bool - - Helm() helmcattleio.Interface -} - -func (f *sharedInformerFactory) Helm() helmcattleio.Interface { - return helmcattleio.New(f, f.namespace, f.tweakListOptions) -} diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/generic.go b/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/generic.go deleted file mode 100644 index d62013bc6ce4..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/generic.go +++ /dev/null @@ -1,62 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package externalversions - -import ( - "fmt" - - v1 "github.com/rancher/helm-controller/pkg/apis/helm.cattle.io/v1" - schema "k8s.io/apimachinery/pkg/runtime/schema" - cache "k8s.io/client-go/tools/cache" -) - -// GenericInformer is type of SharedIndexInformer which will locate and delegate to other -// sharedInformers based on type -type GenericInformer interface { - Informer() cache.SharedIndexInformer - Lister() cache.GenericLister -} - -type genericInformer struct { - informer cache.SharedIndexInformer - resource schema.GroupResource -} - -// Informer returns the SharedIndexInformer. -func (f *genericInformer) Informer() cache.SharedIndexInformer { - return f.informer -} - -// Lister returns the GenericLister. -func (f *genericInformer) Lister() cache.GenericLister { - return cache.NewGenericLister(f.Informer().GetIndexer(), f.resource) -} - -// ForResource gives generic access to a shared informer of the matching type -// TODO extend this to unknown resources with a client pool -func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) { - switch resource { - // Group=helm.cattle.io, Version=v1 - case v1.SchemeGroupVersion.WithResource("helmcharts"): - return &genericInformer{resource: resource.GroupResource(), informer: f.Helm().V1().HelmCharts().Informer()}, nil - - } - - return nil, fmt.Errorf("no informer found for %v", resource) -} diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/interface.go b/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/interface.go deleted file mode 100644 index b2ce3331f2ce..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/interface.go +++ /dev/null @@ -1,46 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package helm - -import ( - v1 "github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/v1" - internalinterfaces "github.com/rancher/helm-controller/pkg/generated/informers/externalversions/internalinterfaces" -) - -// Interface provides access to each of this group's versions. -type Interface interface { - // V1 provides access to shared informers for resources in V1. - V1() v1.Interface -} - -type group struct { - factory internalinterfaces.SharedInformerFactory - namespace string - tweakListOptions internalinterfaces.TweakListOptionsFunc -} - -// New returns a new Interface. -func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface { - return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions} -} - -// V1 returns a new v1.Interface. -func (g *group) V1() v1.Interface { - return v1.New(g.factory, g.namespace, g.tweakListOptions) -} diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/v1/helmchart.go b/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/v1/helmchart.go deleted file mode 100644 index 9be90da6cd65..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/v1/helmchart.go +++ /dev/null @@ -1,90 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package v1 - -import ( - "context" - time "time" - - helmcattleiov1 "github.com/rancher/helm-controller/pkg/apis/helm.cattle.io/v1" - versioned "github.com/rancher/helm-controller/pkg/generated/clientset/versioned" - internalinterfaces "github.com/rancher/helm-controller/pkg/generated/informers/externalversions/internalinterfaces" - v1 "github.com/rancher/helm-controller/pkg/generated/listers/helm.cattle.io/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - watch "k8s.io/apimachinery/pkg/watch" - cache "k8s.io/client-go/tools/cache" -) - -// HelmChartInformer provides access to a shared informer and lister for -// HelmCharts. -type HelmChartInformer interface { - Informer() cache.SharedIndexInformer - Lister() v1.HelmChartLister -} - -type helmChartInformer struct { - factory internalinterfaces.SharedInformerFactory - tweakListOptions internalinterfaces.TweakListOptionsFunc - namespace string -} - -// NewHelmChartInformer constructs a new informer for HelmChart type. -// Always prefer using an informer factory to get a shared informer instead of getting an independent -// one. This reduces memory footprint and number of connections to the server. -func NewHelmChartInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { - return NewFilteredHelmChartInformer(client, namespace, resyncPeriod, indexers, nil) -} - -// NewFilteredHelmChartInformer constructs a new informer for HelmChart type. -// Always prefer using an informer factory to get a shared informer instead of getting an independent -// one. This reduces memory footprint and number of connections to the server. -func NewFilteredHelmChartInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { - return cache.NewSharedIndexInformer( - &cache.ListWatch{ - ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { - if tweakListOptions != nil { - tweakListOptions(&options) - } - return client.HelmV1().HelmCharts(namespace).List(context.TODO(), options) - }, - WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { - if tweakListOptions != nil { - tweakListOptions(&options) - } - return client.HelmV1().HelmCharts(namespace).Watch(context.TODO(), options) - }, - }, - &helmcattleiov1.HelmChart{}, - resyncPeriod, - indexers, - ) -} - -func (f *helmChartInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { - return NewFilteredHelmChartInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) -} - -func (f *helmChartInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&helmcattleiov1.HelmChart{}, f.defaultInformer) -} - -func (f *helmChartInformer) Lister() v1.HelmChartLister { - return v1.NewHelmChartLister(f.Informer().GetIndexer()) -} diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/v1/interface.go b/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/v1/interface.go deleted file mode 100644 index 167677016920..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/v1/interface.go +++ /dev/null @@ -1,45 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package v1 - -import ( - internalinterfaces "github.com/rancher/helm-controller/pkg/generated/informers/externalversions/internalinterfaces" -) - -// Interface provides access to all the informers in this group version. -type Interface interface { - // HelmCharts returns a HelmChartInformer. - HelmCharts() HelmChartInformer -} - -type version struct { - factory internalinterfaces.SharedInformerFactory - namespace string - tweakListOptions internalinterfaces.TweakListOptionsFunc -} - -// New returns a new Interface. -func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface { - return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions} -} - -// HelmCharts returns a HelmChartInformer. -func (v *version) HelmCharts() HelmChartInformer { - return &helmChartInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} -} diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/internalinterfaces/factory_interfaces.go b/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/internalinterfaces/factory_interfaces.go deleted file mode 100644 index 938b0388549f..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/informers/externalversions/internalinterfaces/factory_interfaces.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package internalinterfaces - -import ( - time "time" - - versioned "github.com/rancher/helm-controller/pkg/generated/clientset/versioned" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - cache "k8s.io/client-go/tools/cache" -) - -// NewInformerFunc takes versioned.Interface and time.Duration to return a SharedIndexInformer. -type NewInformerFunc func(versioned.Interface, time.Duration) cache.SharedIndexInformer - -// SharedInformerFactory a small interface to allow for adding an informer without an import cycle -type SharedInformerFactory interface { - Start(stopCh <-chan struct{}) - InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer -} - -// TweakListOptionsFunc is a function that transforms a v1.ListOptions. -type TweakListOptionsFunc func(*v1.ListOptions) diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/listers/helm.cattle.io/v1/expansion_generated.go b/vendor/github.com/rancher/helm-controller/pkg/generated/listers/helm.cattle.io/v1/expansion_generated.go deleted file mode 100644 index fd274425a677..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/listers/helm.cattle.io/v1/expansion_generated.go +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package v1 - -// HelmChartListerExpansion allows custom methods to be added to -// HelmChartLister. -type HelmChartListerExpansion interface{} - -// HelmChartNamespaceListerExpansion allows custom methods to be added to -// HelmChartNamespaceLister. -type HelmChartNamespaceListerExpansion interface{} diff --git a/vendor/github.com/rancher/helm-controller/pkg/generated/listers/helm.cattle.io/v1/helmchart.go b/vendor/github.com/rancher/helm-controller/pkg/generated/listers/helm.cattle.io/v1/helmchart.go deleted file mode 100644 index 6c3c316bc75b..000000000000 --- a/vendor/github.com/rancher/helm-controller/pkg/generated/listers/helm.cattle.io/v1/helmchart.go +++ /dev/null @@ -1,94 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package v1 - -import ( - v1 "github.com/rancher/helm-controller/pkg/apis/helm.cattle.io/v1" - "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/client-go/tools/cache" -) - -// HelmChartLister helps list HelmCharts. -type HelmChartLister interface { - // List lists all HelmCharts in the indexer. - List(selector labels.Selector) (ret []*v1.HelmChart, err error) - // HelmCharts returns an object that can list and get HelmCharts. - HelmCharts(namespace string) HelmChartNamespaceLister - HelmChartListerExpansion -} - -// helmChartLister implements the HelmChartLister interface. -type helmChartLister struct { - indexer cache.Indexer -} - -// NewHelmChartLister returns a new HelmChartLister. -func NewHelmChartLister(indexer cache.Indexer) HelmChartLister { - return &helmChartLister{indexer: indexer} -} - -// List lists all HelmCharts in the indexer. -func (s *helmChartLister) List(selector labels.Selector) (ret []*v1.HelmChart, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.HelmChart)) - }) - return ret, err -} - -// HelmCharts returns an object that can list and get HelmCharts. -func (s *helmChartLister) HelmCharts(namespace string) HelmChartNamespaceLister { - return helmChartNamespaceLister{indexer: s.indexer, namespace: namespace} -} - -// HelmChartNamespaceLister helps list and get HelmCharts. -type HelmChartNamespaceLister interface { - // List lists all HelmCharts in the indexer for a given namespace. - List(selector labels.Selector) (ret []*v1.HelmChart, err error) - // Get retrieves the HelmChart from the indexer for a given namespace and name. - Get(name string) (*v1.HelmChart, error) - HelmChartNamespaceListerExpansion -} - -// helmChartNamespaceLister implements the HelmChartNamespaceLister -// interface. -type helmChartNamespaceLister struct { - indexer cache.Indexer - namespace string -} - -// List lists all HelmCharts in the indexer for a given namespace. -func (s helmChartNamespaceLister) List(selector labels.Selector) (ret []*v1.HelmChart, err error) { - err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { - ret = append(ret, m.(*v1.HelmChart)) - }) - return ret, err -} - -// Get retrieves the HelmChart from the indexer for a given namespace and name. -func (s helmChartNamespaceLister) Get(name string) (*v1.HelmChart, error) { - obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("helmchart"), name) - } - return obj.(*v1.HelmChart), nil -} diff --git a/vendor/github.com/rancher/helm-controller/pkg/helm/controller.go b/vendor/github.com/rancher/helm-controller/pkg/helm/controller.go index 46991ae2e512..964170908a42 100644 --- a/vendor/github.com/rancher/helm-controller/pkg/helm/controller.go +++ b/vendor/github.com/rancher/helm-controller/pkg/helm/controller.go @@ -10,10 +10,10 @@ import ( helmv1 "github.com/rancher/helm-controller/pkg/apis/helm.cattle.io/v1" helmcontroller "github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/v1" - batchcontroller "github.com/rancher/wrangler-api/pkg/generated/controllers/batch/v1" - corecontroller "github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1" - rbaccontroller "github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1" "github.com/rancher/wrangler/pkg/apply" + batchcontroller "github.com/rancher/wrangler/pkg/generated/controllers/batch/v1" + corecontroller "github.com/rancher/wrangler/pkg/generated/controllers/core/v1" + rbaccontroller "github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1" "github.com/rancher/wrangler/pkg/objectset" "github.com/rancher/wrangler/pkg/relatedresource" batch "k8s.io/api/batch/v1" diff --git a/vendor/github.com/rancher/wrangler-api/LICENSE b/vendor/github.com/rancher/lasso/LICENSE similarity index 99% rename from vendor/github.com/rancher/wrangler-api/LICENSE rename to vendor/github.com/rancher/lasso/LICENSE index f433b1a53f5b..e454a52586f2 100644 --- a/vendor/github.com/rancher/wrangler-api/LICENSE +++ b/vendor/github.com/rancher/lasso/LICENSE @@ -175,3 +175,4 @@ of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS + diff --git a/vendor/github.com/rancher/lasso/pkg/cache/cache.go b/vendor/github.com/rancher/lasso/pkg/cache/cache.go new file mode 100644 index 000000000000..65e0464a38b2 --- /dev/null +++ b/vendor/github.com/rancher/lasso/pkg/cache/cache.go @@ -0,0 +1,113 @@ +package cache + +import ( + "context" + "fmt" + "time" + + "github.com/rancher/lasso/pkg/client" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/tools/cache" +) + +type Options struct { + Namespace string + Resync time.Duration + TweakList TweakListOptionsFunc +} + +func NewCache(obj, listObj runtime.Object, client *client.Client, opts *Options) cache.SharedIndexInformer { + indexers := cache.Indexers{} + + if client.Namespaced { + indexers[cache.NamespaceIndex] = cache.MetaNamespaceIndexFunc + } + + opts = applyDefaultCacheOptions(opts) + + lw := &deferredListWatcher{ + client: client, + tweakList: opts.TweakList, + namespace: opts.Namespace, + listObj: listObj, + } + + return &deferredCache{ + SharedIndexInformer: cache.NewSharedIndexInformer( + lw, + obj, + opts.Resync, + indexers, + ), + deferredListWatcher: lw, + } +} + +func applyDefaultCacheOptions(opts *Options) *Options { + var newOpts Options + if opts != nil { + newOpts = *opts + } + if newOpts.Resync == 0 { + newOpts.Resync = 10 * time.Hour + } + if newOpts.TweakList == nil { + newOpts.TweakList = func(*metav1.ListOptions) {} + } + return &newOpts +} + +type deferredCache struct { + cache.SharedIndexInformer + deferredListWatcher *deferredListWatcher +} + +type deferredListWatcher struct { + lw cache.ListerWatcher + client *client.Client + tweakList TweakListOptionsFunc + namespace string + listObj runtime.Object +} + +func (d *deferredListWatcher) List(options metav1.ListOptions) (runtime.Object, error) { + if d.lw == nil { + return nil, fmt.Errorf("cache not started") + } + return d.lw.List(options) +} + +func (d *deferredListWatcher) Watch(options metav1.ListOptions) (watch.Interface, error) { + if d.lw == nil { + return nil, fmt.Errorf("cache not started") + } + return d.lw.Watch(options) +} + +func (d *deferredListWatcher) run(stopCh <-chan struct{}) { + ctx, cancel := context.WithCancel(context.Background()) + go func() { + <-stopCh + cancel() + }() + + d.lw = &cache.ListWatch{ + ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { + d.tweakList(&options) + listObj := d.listObj.DeepCopyObject() + err := d.client.List(ctx, d.namespace, listObj, options) + return listObj, err + }, + WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { + d.tweakList(&options) + return d.client.Watch(ctx, d.namespace, options) + }, + } +} + +func (d *deferredCache) Run(stopCh <-chan struct{}) { + d.deferredListWatcher.run(stopCh) + d.SharedIndexInformer.Run(stopCh) +} diff --git a/vendor/github.com/rancher/lasso/pkg/cache/sharedinformerfactory.go b/vendor/github.com/rancher/lasso/pkg/cache/sharedinformerfactory.go new file mode 100644 index 000000000000..8041dbe11d56 --- /dev/null +++ b/vendor/github.com/rancher/lasso/pkg/cache/sharedinformerfactory.go @@ -0,0 +1,208 @@ +package cache + +import ( + "context" + "sync" + "time" + + "github.com/rancher/lasso/pkg/client" + + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/client-go/tools/cache" +) + +type TweakListOptionsFunc func(*v1.ListOptions) + +type SharedCacheFactoryOptions struct { + DefaultResync time.Duration + DefaultNamespace string + DefaultTweakList TweakListOptionsFunc + + KindResync map[schema.GroupVersionKind]time.Duration + KindNamespace map[schema.GroupVersionKind]string + KindTweakList map[schema.GroupVersionKind]TweakListOptionsFunc +} + +type sharedCacheFactory struct { + lock sync.Mutex + + tweakList TweakListOptionsFunc + defaultResync time.Duration + defaultNamespace string + customResync map[schema.GroupVersionKind]time.Duration + customNamespaces map[schema.GroupVersionKind]string + customTweakList map[schema.GroupVersionKind]TweakListOptionsFunc + sharedClientFactory client.SharedClientFactory + + caches map[schema.GroupVersionKind]cache.SharedIndexInformer + startedCaches map[schema.GroupVersionKind]bool +} + +// NewSharedInformerFactoryWithOptions constructs a new instance of a SharedInformerFactory with additional options. +func NewSharedCachedFactory(sharedClientFactory client.SharedClientFactory, opts *SharedCacheFactoryOptions) SharedCacheFactory { + opts = applyDefaults(opts) + + factory := &sharedCacheFactory{ + lock: sync.Mutex{}, + tweakList: opts.DefaultTweakList, + defaultResync: opts.DefaultResync, + defaultNamespace: opts.DefaultNamespace, + customResync: opts.KindResync, + customNamespaces: opts.KindNamespace, + customTweakList: opts.KindTweakList, + caches: map[schema.GroupVersionKind]cache.SharedIndexInformer{}, + startedCaches: map[schema.GroupVersionKind]bool{}, + sharedClientFactory: sharedClientFactory, + } + + return factory +} + +func applyDefaults(opts *SharedCacheFactoryOptions) *SharedCacheFactoryOptions { + var newOpts SharedCacheFactoryOptions + if opts != nil { + newOpts = *opts + } + + return &newOpts +} + +func (f *sharedCacheFactory) StartGVK(ctx context.Context, gvk schema.GroupVersionKind) error { + f.lock.Lock() + defer f.lock.Unlock() + + informer, ok := f.caches[gvk] + if !ok { + return nil + } + + if !f.startedCaches[gvk] { + go informer.Run(ctx.Done()) + f.startedCaches[gvk] = true + } + + return nil +} + +func (f *sharedCacheFactory) Start(ctx context.Context) error { + f.lock.Lock() + defer f.lock.Unlock() + + for informerType, informer := range f.caches { + if !f.startedCaches[informerType] { + go informer.Run(ctx.Done()) + f.startedCaches[informerType] = true + } + } + + return nil +} + +func (f *sharedCacheFactory) WaitForCacheSync(ctx context.Context) map[schema.GroupVersionKind]bool { + informers := func() map[schema.GroupVersionKind]cache.SharedIndexInformer { + f.lock.Lock() + defer f.lock.Unlock() + + informers := map[schema.GroupVersionKind]cache.SharedIndexInformer{} + for informerType, informer := range f.caches { + if f.startedCaches[informerType] { + informers[informerType] = informer + } + } + return informers + }() + + res := map[schema.GroupVersionKind]bool{} + for informType, informer := range informers { + res[informType] = cache.WaitForCacheSync(ctx.Done(), informer.HasSynced) + } + return res +} + +func (f *sharedCacheFactory) ForObject(obj runtime.Object) (cache.SharedIndexInformer, error) { + return f.ForKind(obj.GetObjectKind().GroupVersionKind()) +} + +func (f *sharedCacheFactory) ForResource(gvr schema.GroupVersionResource, namespaced bool) (cache.SharedIndexInformer, error) { + return f.ForResourceKind(gvr, "", namespaced) +} + +func (f *sharedCacheFactory) ForKind(gvk schema.GroupVersionKind) (cache.SharedIndexInformer, error) { + gvr, namespaced, err := f.sharedClientFactory.ResourceForGVK(gvk) + if err != nil { + return nil, err + } + return f.ForResourceKind(gvr, gvk.Kind, namespaced) +} + +func (f *sharedCacheFactory) ForResourceKind(gvr schema.GroupVersionResource, kind string, namespaced bool) (cache.SharedIndexInformer, error) { + var ( + gvk schema.GroupVersionKind + err error + ) + + if kind == "" { + gvk, err = f.sharedClientFactory.GVKForResource(gvr) + if err != nil { + return nil, err + } + } else { + gvk = gvr.GroupVersion().WithKind(kind) + } + + f.lock.Lock() + defer f.lock.Unlock() + + informer, ok := f.caches[gvk] + if ok { + return informer, nil + } + + resyncPeriod, ok := f.customResync[gvk] + if !ok { + resyncPeriod = f.defaultResync + } + + namespace, ok := f.customNamespaces[gvk] + if !ok { + namespace = f.defaultNamespace + } + + tweakList, ok := f.customTweakList[gvk] + if !ok { + tweakList = f.tweakList + } + + obj, objList, err := f.sharedClientFactory.NewObjects(gvk) + if err != nil { + return nil, err + } + + client := f.sharedClientFactory.ForResourceKind(gvr, kind, namespaced) + + cache := NewCache(obj, objList, client, &Options{ + Namespace: namespace, + Resync: resyncPeriod, + TweakList: tweakList, + }) + f.caches[gvk] = cache + + return cache, nil +} + +func (f *sharedCacheFactory) SharedClientFactory() client.SharedClientFactory { + return f.sharedClientFactory +} + +type SharedCacheFactory interface { + Start(ctx context.Context) error + StartGVK(ctx context.Context, gvk schema.GroupVersionKind) error + ForObject(obj runtime.Object) (cache.SharedIndexInformer, error) + ForKind(gvk schema.GroupVersionKind) (cache.SharedIndexInformer, error) + ForResource(gvr schema.GroupVersionResource, namespaced bool) (cache.SharedIndexInformer, error) + ForResourceKind(gvr schema.GroupVersionResource, kind string, namespaced bool) (cache.SharedIndexInformer, error) + WaitForCacheSync(ctx context.Context) map[schema.GroupVersionKind]bool + SharedClientFactory() client.SharedClientFactory +} diff --git a/vendor/github.com/rancher/lasso/pkg/client/client.go b/vendor/github.com/rancher/lasso/pkg/client/client.go new file mode 100644 index 000000000000..8d1d7b5e5f99 --- /dev/null +++ b/vendor/github.com/rancher/lasso/pkg/client/client.go @@ -0,0 +1,280 @@ +package client + +import ( + "context" + "time" + + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/rest" +) + +type Client struct { + RESTClient rest.Interface + timeout time.Duration + Namespaced bool + GVR schema.GroupVersionResource + resource string + prefix []string + apiVersion string + kind string +} + +func IsNamespaced(gvr schema.GroupVersionResource, mapper meta.RESTMapper) (bool, error) { + kind, err := mapper.KindFor(gvr) + if err != nil { + return false, err + } + + mapping, err := mapper.RESTMapping(kind.GroupKind(), kind.Version) + if err != nil { + return false, err + } + + return mapping.Scope.Name() == meta.RESTScopeNameNamespace, nil +} + +func NewClient(gvr schema.GroupVersionResource, kind string, namespaced bool, client rest.Interface, defaultTimeout time.Duration) *Client { + var ( + prefix []string + ) + + if gvr.Group == "" { + prefix = []string{ + "api", + gvr.Version, + } + } else { + prefix = []string{ + "apis", + gvr.Group, + gvr.Version, + } + } + + c := &Client{ + RESTClient: client, + timeout: defaultTimeout, + Namespaced: namespaced, + GVR: gvr, + prefix: prefix, + resource: gvr.Resource, + } + c.apiVersion, c.kind = gvr.GroupVersion().WithKind(kind).ToAPIVersionAndKind() + return c +} + +func noop() {} + +func (c *Client) setupCtx(ctx context.Context, minTimeout time.Duration) (context.Context, func()) { + if minTimeout == 0 && c.timeout == 0 { + return ctx, noop + } + + timeout := c.timeout + if minTimeout > 0 && timeout < minTimeout { + timeout = minTimeout + } + + return context.WithTimeout(ctx, timeout) +} + +func (c *Client) Get(ctx context.Context, namespace, name string, result runtime.Object, options metav1.GetOptions) (err error) { + defer c.setKind(result) + ctx, cancel := c.setupCtx(ctx, 0) + defer cancel() + err = c.RESTClient.Get(). + Prefix(c.prefix...). + NamespaceIfScoped(namespace, c.Namespaced). + Resource(c.resource). + Name(name). + VersionedParams(&options, metav1.ParameterCodec). + Do(ctx). + Into(result) + return +} + +func (c *Client) List(ctx context.Context, namespace string, result runtime.Object, opts metav1.ListOptions) (err error) { + ctx, cancel := c.setupCtx(ctx, 0) + defer cancel() + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + r := c.RESTClient.Get() + if namespace != "" { + r = r.NamespaceIfScoped(namespace, c.Namespaced) + } + err = r.Resource(c.resource). + Prefix(c.prefix...). + VersionedParams(&opts, metav1.ParameterCodec). + Timeout(timeout). + Do(ctx). + Into(result) + return +} + +func (c *Client) Watch(ctx context.Context, namespace string, opts metav1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.injectKind(c.RESTClient.Get(). + Prefix(c.prefix...). + NamespaceIfScoped(namespace, c.Namespaced). + Resource(c.resource). + VersionedParams(&opts, metav1.ParameterCodec). + Timeout(timeout). + Watch(ctx)) +} + +func (c *Client) Create(ctx context.Context, namespace string, obj, result runtime.Object, opts metav1.CreateOptions) (err error) { + defer c.setKind(result) + ctx, cancel := c.setupCtx(ctx, 0) + defer cancel() + err = c.RESTClient.Post(). + Prefix(c.prefix...). + NamespaceIfScoped(namespace, c.Namespaced). + Resource(c.resource). + VersionedParams(&opts, metav1.ParameterCodec). + Body(obj). + Do(ctx). + Into(result) + return +} + +func (c *Client) Update(ctx context.Context, namespace string, obj, result runtime.Object, opts metav1.UpdateOptions) (err error) { + defer c.setKind(result) + ctx, cancel := c.setupCtx(ctx, 0) + defer cancel() + m, err := meta.Accessor(obj) + if err != nil { + return err + } + err = c.RESTClient.Put(). + Prefix(c.prefix...). + NamespaceIfScoped(namespace, c.Namespaced). + Resource(c.resource). + Name(m.GetName()). + VersionedParams(&opts, metav1.ParameterCodec). + Body(obj). + Do(ctx). + Into(result) + return +} + +func (c *Client) UpdateStatus(ctx context.Context, namespace string, obj, result runtime.Object, opts metav1.UpdateOptions) (err error) { + defer c.setKind(result) + ctx, cancel := c.setupCtx(ctx, 0) + defer cancel() + m, err := meta.Accessor(obj) + if err != nil { + return err + } + err = c.RESTClient.Put(). + Prefix(c.prefix...). + NamespaceIfScoped(namespace, c.Namespaced). + Resource(c.resource). + Name(m.GetName()). + SubResource("status"). + VersionedParams(&opts, metav1.ParameterCodec). + Body(obj). + Do(ctx). + Into(result) + return +} + +func (c *Client) Delete(ctx context.Context, namespace, name string, opts metav1.DeleteOptions) error { + ctx, cancel := c.setupCtx(ctx, 0) + defer cancel() + return c.RESTClient.Delete(). + Prefix(c.prefix...). + NamespaceIfScoped(namespace, c.Namespaced). + Resource(c.resource). + Name(name). + Body(&opts). + Do(ctx). + Error() +} + +func (c *Client) DeleteCollection(ctx context.Context, namespace string, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { + ctx, cancel := c.setupCtx(ctx, 0) + defer cancel() + var timeout time.Duration + if listOpts.TimeoutSeconds != nil { + timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second + } + return c.RESTClient.Delete(). + Prefix(c.prefix...). + NamespaceIfScoped(namespace, c.Namespaced). + Resource(c.resource). + VersionedParams(&listOpts, metav1.ParameterCodec). + Timeout(timeout). + Body(&opts). + Do(ctx). + Error() +} + +func (c *Client) Patch(ctx context.Context, namespace, name string, pt types.PatchType, data []byte, result runtime.Object, opts metav1.PatchOptions, subresources ...string) (err error) { + defer c.setKind(result) + ctx, cancel := c.setupCtx(ctx, 0) + defer cancel() + err = c.RESTClient.Patch(pt). + Prefix(c.prefix...). + Namespace(namespace). + Resource(c.resource). + Name(name). + SubResource(subresources...). + VersionedParams(&opts, metav1.ParameterCodec). + Body(data). + Do(ctx). + Into(result) + return +} + +func (c *Client) setKind(obj runtime.Object) { + if c.kind == "" { + return + } + if _, ok := obj.(*metav1.Status); !ok { + if meta, err := meta.TypeAccessor(obj); err == nil { + meta.SetKind(c.kind) + meta.SetAPIVersion(c.apiVersion) + } + } +} + +func (c *Client) injectKind(w watch.Interface, err error) (watch.Interface, error) { + if c.kind == "" || err != nil { + return w, err + } + + eventChan := make(chan watch.Event) + + go func() { + defer close(eventChan) + for event := range w.ResultChan() { + c.setKind(event.Object) + eventChan <- event + } + }() + + return &watcher{ + Interface: w, + eventChan: eventChan, + }, nil +} + +type watcher struct { + watch.Interface + eventChan chan watch.Event +} + +func (w *watcher) ResultChan() <-chan watch.Event { + return w.eventChan +} diff --git a/vendor/github.com/rancher/lasso/pkg/client/sharedclientfactory.go b/vendor/github.com/rancher/lasso/pkg/client/sharedclientfactory.go new file mode 100644 index 000000000000..9b68783d3989 --- /dev/null +++ b/vendor/github.com/rancher/lasso/pkg/client/sharedclientfactory.go @@ -0,0 +1,183 @@ +package client + +import ( + "fmt" + "sync" + "time" + + "github.com/rancher/lasso/pkg/mapper" + "github.com/rancher/lasso/pkg/scheme" + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/client-go/rest" +) + +type SharedClientFactoryOptions struct { + Mapper meta.RESTMapper + Scheme *runtime.Scheme +} + +type SharedClientFactory interface { + ForKind(gvk schema.GroupVersionKind) (*Client, error) + ForResource(gvr schema.GroupVersionResource, namespaced bool) (*Client, error) + ForResourceKind(gvr schema.GroupVersionResource, kind string, namespaced bool) *Client + NewObjects(gvk schema.GroupVersionKind) (runtime.Object, runtime.Object, error) + GVKForObject(obj runtime.Object) (schema.GroupVersionKind, error) + GVKForResource(gvr schema.GroupVersionResource) (schema.GroupVersionKind, error) + ResourceForGVK(gvk schema.GroupVersionKind) (schema.GroupVersionResource, bool, error) +} + +type sharedClientFactory struct { + createLock sync.RWMutex + clients map[schema.GroupVersionResource]*Client + timeout time.Duration + rest rest.Interface + + Mapper meta.RESTMapper + Scheme *runtime.Scheme +} + +func NewSharedClientFactoryForConfig(config *rest.Config) (SharedClientFactory, error) { + return NewSharedClientFactory(config, nil) +} + +func NewSharedClientFactory(config *rest.Config, opts *SharedClientFactoryOptions) (_ SharedClientFactory, err error) { + opts, err = applyDefaults(config, opts) + if err != nil { + return nil, err + } + + config, timeout := populateConfig(opts.Scheme, config) + rest, err := rest.UnversionedRESTClientFor(config) + if err != nil { + return nil, err + } + + return &sharedClientFactory{ + timeout: timeout, + clients: map[schema.GroupVersionResource]*Client{}, + Scheme: opts.Scheme, + Mapper: opts.Mapper, + rest: rest, + }, nil +} + +func applyDefaults(config *rest.Config, opts *SharedClientFactoryOptions) (*SharedClientFactoryOptions, error) { + var newOpts SharedClientFactoryOptions + if opts != nil { + newOpts = *opts + } + + if newOpts.Scheme == nil { + newOpts.Scheme = scheme.All + } + + if newOpts.Mapper == nil { + mapperOpt, err := mapper.New(config) + if err != nil { + return nil, err + } + newOpts.Mapper = mapperOpt + } + + return &newOpts, nil +} + +func (s *sharedClientFactory) GVKForResource(gvr schema.GroupVersionResource) (schema.GroupVersionKind, error) { + return s.Mapper.KindFor(gvr) +} + +func (s *sharedClientFactory) ResourceForGVK(gvk schema.GroupVersionKind) (schema.GroupVersionResource, bool, error) { + mapping, err := s.Mapper.RESTMapping(gvk.GroupKind(), gvk.Version) + if err != nil { + return schema.GroupVersionResource{}, false, err + } + + nsed, err := IsNamespaced(mapping.Resource, s.Mapper) + if err != nil { + return schema.GroupVersionResource{}, false, err + } + + return mapping.Resource, nsed, nil +} + +func (s *sharedClientFactory) GVKForObject(obj runtime.Object) (schema.GroupVersionKind, error) { + gvks, _, err := s.Scheme.ObjectKinds(obj) + if err != nil { + return schema.GroupVersionKind{}, err + } + if len(gvks) == 0 { + return schema.GroupVersionKind{}, fmt.Errorf("failed to find schema.GroupVersionKind for %T", obj) + } + return gvks[0], nil +} + +func (s *sharedClientFactory) NewObjects(gvk schema.GroupVersionKind) (runtime.Object, runtime.Object, error) { + obj, err := s.Scheme.New(gvk) + if err != nil { + return nil, nil, err + } + + objList, err := s.Scheme.New(schema.GroupVersionKind{ + Group: gvk.Group, + Version: gvk.Version, + Kind: gvk.Kind + "List", + }) + return obj, objList, err +} + +func (s *sharedClientFactory) ForKind(gvk schema.GroupVersionKind) (*Client, error) { + gvr, nsed, err := s.ResourceForGVK(gvk) + if err != nil { + return nil, err + } + + return s.ForResourceKind(gvr, gvk.Kind, nsed), nil +} + +func (s *sharedClientFactory) ForResource(gvr schema.GroupVersionResource, namespaced bool) (*Client, error) { + gvk, err := s.GVKForResource(gvr) + if err != nil { + return nil, err + } + return s.ForResourceKind(gvr, gvk.Kind, namespaced), nil +} + +func (s *sharedClientFactory) ForResourceKind(gvr schema.GroupVersionResource, kind string, namespaced bool) *Client { + client := s.getClient(gvr) + if client != nil { + return client + } + + s.createLock.Lock() + defer s.createLock.Unlock() + + client = s.clients[gvr] + if client != nil { + return client + } + + client = NewClient(gvr, kind, namespaced, s.rest, s.timeout) + + s.clients[gvr] = client + return client +} + +func (s *sharedClientFactory) getClient(gvr schema.GroupVersionResource) *Client { + s.createLock.RLock() + defer s.createLock.RUnlock() + return s.clients[gvr] +} + +func populateConfig(scheme *runtime.Scheme, config *rest.Config) (*rest.Config, time.Duration) { + config = rest.CopyConfig(config) + config.NegotiatedSerializer = serializer.NewCodecFactory(scheme).WithoutConversion() + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + timeout := config.Timeout + config.Timeout = 0 + return config, timeout +} diff --git a/vendor/github.com/rancher/lasso/pkg/controller/controller.go b/vendor/github.com/rancher/lasso/pkg/controller/controller.go new file mode 100644 index 000000000000..982b864ae3dd --- /dev/null +++ b/vendor/github.com/rancher/lasso/pkg/controller/controller.go @@ -0,0 +1,288 @@ +package controller + +import ( + "context" + "fmt" + "strings" + "sync" + "time" + + "github.com/rancher/lasso/pkg/log" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/client-go/tools/cache" + "k8s.io/client-go/util/workqueue" +) + +type Handler interface { + OnChange(key string, obj runtime.Object) error +} + +type HandlerFunc func(key string, obj runtime.Object) error + +func (h HandlerFunc) OnChange(key string, obj runtime.Object) error { + return h(key, obj) +} + +type Controller interface { + Enqueue(namespace, name string) + EnqueueAfter(namespace, name string, delay time.Duration) + EnqueueKey(key string) + Informer() cache.SharedIndexInformer + Start(ctx context.Context, workers int) error +} + +type controller struct { + startLock sync.Mutex + + name string + workqueue workqueue.RateLimitingInterface + rateLimiter workqueue.RateLimiter + informer cache.SharedIndexInformer + handler Handler + gvk schema.GroupVersionKind + startKeys []startKey + started bool + startCache func(context.Context) error +} + +type startKey struct { + key string + after time.Duration +} + +type Options struct { + RateLimiter workqueue.RateLimiter +} + +func New(name string, informer cache.SharedIndexInformer, startCache func(context.Context) error, handler Handler, opts *Options) Controller { + opts = applyDefaultOptions(opts) + + controller := &controller{ + name: name, + handler: handler, + informer: informer, + rateLimiter: opts.RateLimiter, + startCache: startCache, + } + + informer.AddEventHandler(cache.ResourceEventHandlerFuncs{ + AddFunc: controller.handleObject, + UpdateFunc: func(old, new interface{}) { + controller.handleObject(new) + }, + DeleteFunc: controller.handleObject, + }) + + return controller +} + +func applyDefaultOptions(opts *Options) *Options { + var newOpts Options + if opts != nil { + newOpts = *opts + } + if newOpts.RateLimiter == nil { + newOpts.RateLimiter = workqueue.DefaultControllerRateLimiter() + } + return &newOpts +} + +func (c *controller) Informer() cache.SharedIndexInformer { + return c.informer +} + +func (c *controller) GroupVersionKind() schema.GroupVersionKind { + return c.gvk +} + +func (c *controller) run(workers int, stopCh <-chan struct{}) { + c.startLock.Lock() + // we have to defer queue creation until we have a stopCh available because a workqueue + // will create a goroutine under the hood. It we instantiate a workqueue we must have + // a mechanism to Shutdown it down. Without the stopCh we don't know when to shutdown + // the queue and release the goroutine + c.workqueue = workqueue.NewNamedRateLimitingQueue(c.rateLimiter, c.name) + for _, start := range c.startKeys { + if start.after == 0 { + c.workqueue.Add(start.key) + } else { + c.workqueue.AddAfter(start.key, start.after) + } + } + c.startKeys = nil + c.startLock.Unlock() + + defer utilruntime.HandleCrash() + defer func() { + c.workqueue.ShutDown() + c.workqueue = nil + }() + + // Start the informer factories to begin populating the informer caches + log.Infof("Starting %s controller", c.name) + + // Launch two workers to process Foo resources + for i := 0; i < workers; i++ { + go wait.Until(c.runWorker, time.Second, stopCh) + } + + <-stopCh + log.Infof("Shutting down %s workers", c.name) +} + +func (c *controller) Start(ctx context.Context, workers int) error { + c.startLock.Lock() + defer c.startLock.Unlock() + + if c.started { + return nil + } + + if err := c.startCache(ctx); err != nil { + return err + } + + if ok := cache.WaitForCacheSync(ctx.Done(), c.informer.HasSynced); !ok { + return fmt.Errorf("failed to wait for caches to sync") + } + + go c.run(workers, ctx.Done()) + c.started = true + return nil +} + +func (c *controller) runWorker() { + for c.processNextWorkItem() { + } +} + +func (c *controller) processNextWorkItem() bool { + obj, shutdown := c.workqueue.Get() + + if shutdown { + return false + } + + if err := c.processSingleItem(obj); err != nil { + if !strings.Contains(err.Error(), "please apply your changes to the latest version and try again") { + log.Errorf("%v", err) + } + return true + } + + return true +} + +func (c *controller) processSingleItem(obj interface{}) error { + var ( + key string + ok bool + ) + + defer c.workqueue.Done(obj) + + if key, ok = obj.(string); !ok { + c.workqueue.Forget(obj) + log.Errorf("expected string in workqueue but got %#v", obj) + return nil + } + if err := c.syncHandler(key); err != nil { + c.workqueue.AddRateLimited(key) + return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) + } + + c.workqueue.Forget(obj) + return nil +} + +func (c *controller) syncHandler(key string) error { + obj, exists, err := c.informer.GetStore().GetByKey(key) + if err != nil { + return err + } + if !exists { + return c.handler.OnChange(key, nil) + } + + return c.handler.OnChange(key, obj.(runtime.Object)) +} + +func (c *controller) EnqueueKey(key string) { + c.startLock.Lock() + defer c.startLock.Unlock() + + if c.workqueue == nil { + c.startKeys = append(c.startKeys, startKey{key: key}) + } else { + c.workqueue.AddRateLimited(key) + } +} + +func (c *controller) Enqueue(namespace, name string) { + key := keyFunc(namespace, name) + + c.startLock.Lock() + defer c.startLock.Unlock() + + if c.workqueue == nil { + c.startKeys = append(c.startKeys, startKey{key: key}) + } else { + c.workqueue.AddRateLimited(key) + } +} + +func (c *controller) EnqueueAfter(namespace, name string, duration time.Duration) { + key := keyFunc(namespace, name) + + c.startLock.Lock() + defer c.startLock.Unlock() + + if c.workqueue == nil { + c.startKeys = append(c.startKeys, startKey{key: key, after: duration}) + } else { + c.workqueue.AddAfter(key, duration) + } +} + +func keyFunc(namespace, name string) string { + if namespace == "" { + return name + } + return namespace + "/" + name +} + +func (c *controller) enqueue(obj interface{}) { + var key string + var err error + if key, err = cache.MetaNamespaceKeyFunc(obj); err != nil { + log.Errorf("%v", err) + return + } + c.startLock.Lock() + if c.workqueue == nil { + c.startKeys = append(c.startKeys, startKey{key: key}) + } else { + c.workqueue.Add(key) + } + c.startLock.Unlock() +} + +func (c *controller) handleObject(obj interface{}) { + if _, ok := obj.(metav1.Object); !ok { + tombstone, ok := obj.(cache.DeletedFinalStateUnknown) + if !ok { + log.Errorf("error decoding object, invalid type") + return + } + _, ok = tombstone.Obj.(metav1.Object) + if !ok { + log.Errorf("error decoding object tombstone, invalid type") + return + } + } + c.enqueue(obj) +} diff --git a/vendor/github.com/rancher/lasso/pkg/controller/errorcontroller.go b/vendor/github.com/rancher/lasso/pkg/controller/errorcontroller.go new file mode 100644 index 000000000000..f868eb1f3266 --- /dev/null +++ b/vendor/github.com/rancher/lasso/pkg/controller/errorcontroller.go @@ -0,0 +1,35 @@ +package controller + +import ( + "context" + "time" + + "k8s.io/client-go/tools/cache" +) + +type errorController struct { + informer cache.SharedIndexInformer +} + +func newErrorController() *errorController { + return &errorController{ + informer: cache.NewSharedIndexInformer(nil, nil, 0, cache.Indexers{}), + } +} + +func (n *errorController) Enqueue(namespace, name string) { +} + +func (n *errorController) EnqueueAfter(namespace, name string, delay time.Duration) { +} + +func (n *errorController) EnqueueKey(key string) { +} + +func (n *errorController) Informer() cache.SharedIndexInformer { + return n.informer +} + +func (n *errorController) Start(ctx context.Context, workers int) error { + return nil +} diff --git a/vendor/github.com/rancher/lasso/pkg/controller/sharedcontroller.go b/vendor/github.com/rancher/lasso/pkg/controller/sharedcontroller.go new file mode 100644 index 000000000000..9f90b88b93b1 --- /dev/null +++ b/vendor/github.com/rancher/lasso/pkg/controller/sharedcontroller.go @@ -0,0 +1,122 @@ +package controller + +import ( + "context" + "sync" + "time" + + "github.com/rancher/lasso/pkg/cache" + "github.com/rancher/lasso/pkg/client" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + cachetools "k8s.io/client-go/tools/cache" +) + +type SharedControllerHandler interface { + OnChange(key string, obj runtime.Object) (runtime.Object, error) +} + +type SharedController interface { + Controller + + RegisterHandler(ctx context.Context, name string, handler SharedControllerHandler) + Client() *client.Client +} + +type SharedControllerHandlerFunc func(key string, obj runtime.Object) (runtime.Object, error) + +func (s SharedControllerHandlerFunc) OnChange(key string, obj runtime.Object) (runtime.Object, error) { + return s(key, obj) +} + +type sharedController struct { + // this allows one to create a sharedcontroller but it will not actually be started + // unless some aspect of the controllers informer is accessed or needed to be used + deferredController func() (Controller, error) + sharedCacheFactory cache.SharedCacheFactory + controller Controller + gvk schema.GroupVersionKind + handler *sharedHandler + startLock sync.Mutex + started bool + startError error + client *client.Client +} + +func (s *sharedController) Enqueue(namespace, name string) { + s.initController().Enqueue(namespace, name) +} + +func (s *sharedController) EnqueueAfter(namespace, name string, delay time.Duration) { + s.initController().EnqueueAfter(namespace, name, delay) +} + +func (s *sharedController) EnqueueKey(key string) { + s.initController().EnqueueKey(key) +} + +func (s *sharedController) Informer() cachetools.SharedIndexInformer { + return s.initController().Informer() +} + +func (s *sharedController) Client() *client.Client { + return s.client +} + +func (s *sharedController) initController() Controller { + s.startLock.Lock() + defer s.startLock.Unlock() + + if s.controller != nil { + return s.controller + } + + controller, err := s.deferredController() + if err != nil { + controller = newErrorController() + } + + s.startError = err + s.controller = controller + return s.controller +} + +func (s *sharedController) Start(ctx context.Context, workers int) error { + s.startLock.Lock() + defer s.startLock.Unlock() + + if s.startError != nil || s.controller == nil { + return s.startError + } + + if err := s.controller.Start(ctx, workers); err != nil { + return err + } + s.started = true + + go func() { + <-ctx.Done() + s.startLock.Lock() + defer s.startLock.Unlock() + s.started = false + }() + + return nil +} + +func (s *sharedController) RegisterHandler(ctx context.Context, name string, handler SharedControllerHandler) { + // Ensure that controller is initialized + c := s.initController() + + getHandlerTransaction(ctx).do(func() { + s.handler.Register(ctx, name, handler) + + s.startLock.Lock() + defer s.startLock.Unlock() + if s.started { + for _, key := range c.Informer().GetStore().ListKeys() { + c.EnqueueKey(key) + } + } + }) +} diff --git a/vendor/github.com/rancher/lasso/pkg/controller/sharedcontrollerfactory.go b/vendor/github.com/rancher/lasso/pkg/controller/sharedcontrollerfactory.go new file mode 100644 index 000000000000..f4974137b697 --- /dev/null +++ b/vendor/github.com/rancher/lasso/pkg/controller/sharedcontrollerfactory.go @@ -0,0 +1,205 @@ +package controller + +import ( + "context" + "sync" + + "github.com/rancher/lasso/pkg/cache" + "github.com/rancher/lasso/pkg/client" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/client-go/rest" + "k8s.io/client-go/util/workqueue" +) + +type SharedControllerFactory interface { + ForObject(obj runtime.Object) (SharedController, error) + ForKind(gvk schema.GroupVersionKind) (SharedController, error) + ForResource(gvr schema.GroupVersionResource, namespaced bool) SharedController + ForResourceKind(gvr schema.GroupVersionResource, kind string, namespaced bool) SharedController + SharedCacheFactory() cache.SharedCacheFactory + Start(ctx context.Context, workers int) error +} + +type SharedControllerFactoryOptions struct { + DefaultRateLimiter workqueue.RateLimiter + DefaultWorkers int + + KindRateLimiter map[schema.GroupVersionKind]workqueue.RateLimiter + KindWorkers map[schema.GroupVersionKind]int +} + +type sharedControllerFactory struct { + controllerLock sync.RWMutex + + sharedCacheFactory cache.SharedCacheFactory + controllers map[schema.GroupVersionResource]*sharedController + + rateLimiter workqueue.RateLimiter + workers int + kindRateLimiter map[schema.GroupVersionKind]workqueue.RateLimiter + kindWorkers map[schema.GroupVersionKind]int +} + +func NewSharedControllerFactoryFromConfig(config *rest.Config, scheme *runtime.Scheme) (SharedControllerFactory, error) { + cf, err := client.NewSharedClientFactory(config, &client.SharedClientFactoryOptions{ + Scheme: scheme, + }) + if err != nil { + return nil, err + } + return NewSharedControllerFactory(cache.NewSharedCachedFactory(cf, nil), nil), nil +} + +func NewSharedControllerFactory(cacheFactory cache.SharedCacheFactory, opts *SharedControllerFactoryOptions) SharedControllerFactory { + opts = applyDefaultSharedOptions(opts) + return &sharedControllerFactory{ + sharedCacheFactory: cacheFactory, + controllers: map[schema.GroupVersionResource]*sharedController{}, + workers: opts.DefaultWorkers, + kindWorkers: opts.KindWorkers, + rateLimiter: opts.DefaultRateLimiter, + kindRateLimiter: opts.KindRateLimiter, + } +} + +func applyDefaultSharedOptions(opts *SharedControllerFactoryOptions) *SharedControllerFactoryOptions { + var newOpts SharedControllerFactoryOptions + if opts != nil { + newOpts = *opts + } + if newOpts.DefaultWorkers == 0 { + newOpts.DefaultWorkers = 5 + } + return &newOpts +} + +func (s *sharedControllerFactory) Start(ctx context.Context, defaultWorkers int) error { + s.controllerLock.Lock() + defer s.controllerLock.Unlock() + + if err := s.sharedCacheFactory.Start(ctx); err != nil { + return err + } + + for gvr, controller := range s.controllers { + w, err := s.getWorkers(gvr, defaultWorkers) + if err != nil { + return err + } + if err := controller.Start(ctx, w); err != nil { + return err + } + } + + return nil +} + +func (s *sharedControllerFactory) ForObject(obj runtime.Object) (SharedController, error) { + gvk, err := s.sharedCacheFactory.SharedClientFactory().GVKForObject(obj) + if err != nil { + return nil, err + } + return s.ForKind(gvk) +} + +func (s *sharedControllerFactory) ForKind(gvk schema.GroupVersionKind) (SharedController, error) { + gvr, nsed, err := s.sharedCacheFactory.SharedClientFactory().ResourceForGVK(gvk) + if err != nil { + return nil, err + } + + return s.ForResourceKind(gvr, gvk.Kind, nsed), nil +} + +func (s *sharedControllerFactory) ForResource(gvr schema.GroupVersionResource, namespaced bool) SharedController { + return s.ForResourceKind(gvr, "", namespaced) +} + +func (s *sharedControllerFactory) ForResourceKind(gvr schema.GroupVersionResource, kind string, namespaced bool) SharedController { + controllerResult := s.byResource(gvr) + if controllerResult != nil { + return controllerResult + } + + s.controllerLock.Lock() + defer s.controllerLock.Unlock() + + controllerResult = s.controllers[gvr] + if controllerResult != nil { + return controllerResult + } + + client := s.sharedCacheFactory.SharedClientFactory().ForResourceKind(gvr, kind, namespaced) + + handler := &sharedHandler{} + + controllerResult = &sharedController{ + deferredController: func() (Controller, error) { + var ( + gvk schema.GroupVersionKind + err error + ) + + if kind == "" { + gvk, err = s.sharedCacheFactory.SharedClientFactory().GVKForResource(gvr) + if err != nil { + return nil, err + } + } else { + gvk = gvr.GroupVersion().WithKind(kind) + } + + cache, err := s.sharedCacheFactory.ForResourceKind(gvr, kind, namespaced) + if err != nil { + return nil, err + } + + rateLimiter, ok := s.kindRateLimiter[gvk] + if !ok { + rateLimiter = s.rateLimiter + } + + starter := func(ctx context.Context) error { + return s.sharedCacheFactory.StartGVK(ctx, gvk) + } + + c := New(gvk.String(), cache, starter, handler, &Options{ + RateLimiter: rateLimiter, + }) + + return c, err + }, + handler: handler, + client: client, + } + + s.controllers[gvr] = controllerResult + return controllerResult +} + +func (s *sharedControllerFactory) getWorkers(gvr schema.GroupVersionResource, workers int) (int, error) { + gvk, err := s.sharedCacheFactory.SharedClientFactory().GVKForResource(gvr) + if err != nil { + return 0, err + } + + w, ok := s.kindWorkers[gvk] + if ok { + return w, nil + } + if workers > 0 { + return workers, nil + } + return s.workers, nil +} + +func (s *sharedControllerFactory) byResource(gvr schema.GroupVersionResource) *sharedController { + s.controllerLock.RLock() + defer s.controllerLock.RUnlock() + return s.controllers[gvr] +} + +func (s *sharedControllerFactory) SharedCacheFactory() cache.SharedCacheFactory { + return s.sharedCacheFactory +} diff --git a/vendor/github.com/rancher/lasso/pkg/controller/sharedhandler.go b/vendor/github.com/rancher/lasso/pkg/controller/sharedhandler.go new file mode 100644 index 000000000000..a365eccf8129 --- /dev/null +++ b/vendor/github.com/rancher/lasso/pkg/controller/sharedhandler.go @@ -0,0 +1,122 @@ +package controller + +import ( + "context" + "errors" + "fmt" + "reflect" + "strings" + "sync" + "sync/atomic" + + "k8s.io/apimachinery/pkg/runtime" +) + +var ( + ErrIgnore = errors.New("ignore handler error") +) + +type handlerEntry struct { + id int64 + name string + handler SharedControllerHandler +} + +type sharedHandler struct { + // keep first because arm32 needs atomic.AddInt64 target to be mem aligned + idCounter int64 + + lock sync.Mutex + handlers []handlerEntry +} + +func (h *sharedHandler) Register(ctx context.Context, name string, handler SharedControllerHandler) { + h.lock.Lock() + defer h.lock.Unlock() + + id := atomic.AddInt64(&h.idCounter, 1) + h.handlers = append(h.handlers, handlerEntry{ + id: id, + name: name, + handler: handler, + }) + + go func() { + <-ctx.Done() + + h.lock.Lock() + defer h.lock.Unlock() + + for i := range h.handlers { + if h.handlers[i].id == id { + h.handlers = append(h.handlers[:i], h.handlers[i+1:]...) + break + } + } + }() +} + +func (h *sharedHandler) OnChange(key string, obj runtime.Object) error { + var ( + errs errorList + ) + + for _, handler := range h.handlers { + newObj, err := handler.handler.OnChange(key, obj) + if err != nil && !errors.Is(err, ErrIgnore) { + errs = append(errs, &handlerError{ + HandlerName: handler.name, + Err: err, + }) + } + if newObj != nil && !reflect.ValueOf(newObj).IsNil() { + obj = newObj + } + } + + return errs.ToErr() +} + +type errorList []error + +func (e errorList) Error() string { + buf := strings.Builder{} + for _, err := range e { + if buf.Len() > 0 { + buf.WriteString(", ") + } + buf.WriteString(err.Error()) + } + return buf.String() +} + +func (e errorList) ToErr() error { + switch len(e) { + case 0: + return nil + case 1: + return e[0] + default: + return e + } +} + +func (e errorList) Cause() error { + if len(e) > 0 { + return e[0] + } + return nil +} + +type handlerError struct { + HandlerName string + Err error +} + +func (h handlerError) Error() string { + return fmt.Sprintf("handler %s: %v", h.HandlerName, h.Err) +} + +func (h handlerError) Cause() error { + return h.Err +} diff --git a/vendor/github.com/rancher/wrangler/pkg/generic/transaction.go b/vendor/github.com/rancher/lasso/pkg/controller/transaction.go similarity index 83% rename from vendor/github.com/rancher/wrangler/pkg/generic/transaction.go rename to vendor/github.com/rancher/lasso/pkg/controller/transaction.go index 23b9847d8d75..3828dd0f785b 100644 --- a/vendor/github.com/rancher/wrangler/pkg/generic/transaction.go +++ b/vendor/github.com/rancher/lasso/pkg/controller/transaction.go @@ -1,4 +1,4 @@ -package generic +package controller import ( "context" @@ -13,6 +13,18 @@ type HandlerTransaction struct { result bool } +func (h *HandlerTransaction) do(f func()) { + if h == nil { + f() + } else { + go func() { + if h.shouldContinue() { + f() + } + }() + } +} + func (h *HandlerTransaction) shouldContinue() bool { select { case <-h.parent.Done(): diff --git a/vendor/github.com/rancher/lasso/pkg/log/log.go b/vendor/github.com/rancher/lasso/pkg/log/log.go new file mode 100644 index 000000000000..a8725e453270 --- /dev/null +++ b/vendor/github.com/rancher/lasso/pkg/log/log.go @@ -0,0 +1,13 @@ +package log + +import "log" + +var ( + // Stupid log abstraction + Infof = func(message string, obj ...interface{}) { + log.Printf("INFO: "+message+"\n", obj...) + } + Errorf = func(message string, obj ...interface{}) { + log.Printf("ERROR: "+message+"\n", obj...) + } +) diff --git a/vendor/github.com/rancher/lasso/pkg/mapper/mapper.go b/vendor/github.com/rancher/lasso/pkg/mapper/mapper.go new file mode 100644 index 000000000000..346658248435 --- /dev/null +++ b/vendor/github.com/rancher/lasso/pkg/mapper/mapper.go @@ -0,0 +1,90 @@ +package mapper + +import ( + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/client-go/discovery" + "k8s.io/client-go/discovery/cached/memory" + "k8s.io/client-go/rest" + "k8s.io/client-go/restmapper" +) + +func New(config *rest.Config) (meta.RESTMapper, error) { + d, err := discovery.NewDiscoveryClientForConfig(config) + if err != nil { + return nil, err + } + cached := memory.NewMemCacheClient(d) + return &retryMapper{ + target: restmapper.NewDeferredDiscoveryRESTMapper(cached), + cache: cached, + }, nil +} + +type retryMapper struct { + target meta.RESTMapper + cache discovery.CachedDiscoveryInterface +} + +func (r *retryMapper) KindFor(resource schema.GroupVersionResource) (schema.GroupVersionKind, error) { + result, err := r.target.KindFor(resource) + if err != nil { + r.cache.Invalidate() + return r.target.KindFor(resource) + } + return result, err +} + +func (r *retryMapper) KindsFor(resource schema.GroupVersionResource) ([]schema.GroupVersionKind, error) { + result, err := r.target.KindsFor(resource) + if err != nil { + r.cache.Invalidate() + return r.target.KindsFor(resource) + } + return result, err +} + +func (r *retryMapper) ResourceFor(input schema.GroupVersionResource) (schema.GroupVersionResource, error) { + result, err := r.target.ResourceFor(input) + if err != nil { + r.cache.Invalidate() + return r.target.ResourceFor(input) + } + return result, err +} + +func (r *retryMapper) ResourcesFor(input schema.GroupVersionResource) ([]schema.GroupVersionResource, error) { + result, err := r.target.ResourcesFor(input) + if err != nil { + r.cache.Invalidate() + return r.target.ResourcesFor(input) + } + return result, err +} + +func (r *retryMapper) RESTMapping(gk schema.GroupKind, versions ...string) (*meta.RESTMapping, error) { + result, err := r.target.RESTMapping(gk, versions...) + if err != nil { + r.cache.Invalidate() + return r.target.RESTMapping(gk, versions...) + } + return result, err +} + +func (r *retryMapper) RESTMappings(gk schema.GroupKind, versions ...string) ([]*meta.RESTMapping, error) { + result, err := r.target.RESTMappings(gk, versions...) + if err != nil { + r.cache.Invalidate() + return r.target.RESTMappings(gk, versions...) + } + return result, err +} + +func (r *retryMapper) ResourceSingularizer(resource string) (singular string, err error) { + result, err := r.target.ResourceSingularizer(resource) + if err != nil { + r.cache.Invalidate() + return r.target.ResourceSingularizer(resource) + } + return result, err +} diff --git a/vendor/github.com/rancher/lasso/pkg/scheme/all.go b/vendor/github.com/rancher/lasso/pkg/scheme/all.go new file mode 100644 index 000000000000..119766c4ce70 --- /dev/null +++ b/vendor/github.com/rancher/lasso/pkg/scheme/all.go @@ -0,0 +1,5 @@ +package scheme + +import "k8s.io/apimachinery/pkg/runtime" + +var All = runtime.NewScheme() diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/factory.go b/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/factory.go deleted file mode 100644 index 9c7261ec788f..000000000000 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/factory.go +++ /dev/null @@ -1,126 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package apps - -import ( - "context" - "time" - - "github.com/rancher/wrangler/pkg/generic" - "github.com/rancher/wrangler/pkg/schemes" - "k8s.io/apimachinery/pkg/runtime/schema" - informers "k8s.io/client-go/informers" - clientset "k8s.io/client-go/kubernetes" - scheme "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" -) - -func init() { - scheme.AddToScheme(schemes.All) -} - -type Factory struct { - synced bool - informerFactory informers.SharedInformerFactory - clientset clientset.Interface - controllerManager *generic.ControllerManager - threadiness map[schema.GroupVersionKind]int -} - -func NewFactoryFromConfigOrDie(config *rest.Config) *Factory { - f, err := NewFactoryFromConfig(config) - if err != nil { - panic(err) - } - return f -} - -func NewFactoryFromConfig(config *rest.Config) (*Factory, error) { - return NewFactoryFromConfigWithOptions(config, nil) -} - -func NewFactoryFromConfigWithNamespace(config *rest.Config, namespace string) (*Factory, error) { - return NewFactoryFromConfigWithOptions(config, &FactoryOptions{ - Namespace: namespace, - }) -} - -type FactoryOptions struct { - Namespace string - Resync time.Duration -} - -func NewFactoryFromConfigWithOptions(config *rest.Config, opts *FactoryOptions) (*Factory, error) { - if opts == nil { - opts = &FactoryOptions{} - } - - cs, err := clientset.NewForConfig(config) - if err != nil { - return nil, err - } - - resync := opts.Resync - if resync == 0 { - resync = 2 * time.Hour - } - - if opts.Namespace == "" { - informerFactory := informers.NewSharedInformerFactory(cs, resync) - return NewFactory(cs, informerFactory), nil - } - - informerFactory := informers.NewSharedInformerFactoryWithOptions(cs, resync, informers.WithNamespace(opts.Namespace)) - return NewFactory(cs, informerFactory), nil -} - -func NewFactory(clientset clientset.Interface, informerFactory informers.SharedInformerFactory) *Factory { - return &Factory{ - threadiness: map[schema.GroupVersionKind]int{}, - controllerManager: &generic.ControllerManager{}, - clientset: clientset, - informerFactory: informerFactory, - } -} - -func (c *Factory) Controllers() map[schema.GroupVersionKind]*generic.Controller { - return c.controllerManager.Controllers() -} - -func (c *Factory) SetThreadiness(gvk schema.GroupVersionKind, threadiness int) { - c.threadiness[gvk] = threadiness -} - -func (c *Factory) Sync(ctx context.Context) error { - c.informerFactory.Start(ctx.Done()) - c.informerFactory.WaitForCacheSync(ctx.Done()) - return nil -} - -func (c *Factory) Start(ctx context.Context, defaultThreadiness int) error { - if err := c.Sync(ctx); err != nil { - return err - } - - return c.controllerManager.Start(ctx, defaultThreadiness, c.threadiness) -} - -func (c *Factory) Apps() Interface { - return New(c.controllerManager, c.informerFactory.Apps(), c.clientset) -} diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/batch/factory.go b/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/batch/factory.go deleted file mode 100644 index c3a8c56498ef..000000000000 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/batch/factory.go +++ /dev/null @@ -1,126 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package batch - -import ( - "context" - "time" - - "github.com/rancher/wrangler/pkg/generic" - "github.com/rancher/wrangler/pkg/schemes" - "k8s.io/apimachinery/pkg/runtime/schema" - informers "k8s.io/client-go/informers" - clientset "k8s.io/client-go/kubernetes" - scheme "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" -) - -func init() { - scheme.AddToScheme(schemes.All) -} - -type Factory struct { - synced bool - informerFactory informers.SharedInformerFactory - clientset clientset.Interface - controllerManager *generic.ControllerManager - threadiness map[schema.GroupVersionKind]int -} - -func NewFactoryFromConfigOrDie(config *rest.Config) *Factory { - f, err := NewFactoryFromConfig(config) - if err != nil { - panic(err) - } - return f -} - -func NewFactoryFromConfig(config *rest.Config) (*Factory, error) { - return NewFactoryFromConfigWithOptions(config, nil) -} - -func NewFactoryFromConfigWithNamespace(config *rest.Config, namespace string) (*Factory, error) { - return NewFactoryFromConfigWithOptions(config, &FactoryOptions{ - Namespace: namespace, - }) -} - -type FactoryOptions struct { - Namespace string - Resync time.Duration -} - -func NewFactoryFromConfigWithOptions(config *rest.Config, opts *FactoryOptions) (*Factory, error) { - if opts == nil { - opts = &FactoryOptions{} - } - - cs, err := clientset.NewForConfig(config) - if err != nil { - return nil, err - } - - resync := opts.Resync - if resync == 0 { - resync = 2 * time.Hour - } - - if opts.Namespace == "" { - informerFactory := informers.NewSharedInformerFactory(cs, resync) - return NewFactory(cs, informerFactory), nil - } - - informerFactory := informers.NewSharedInformerFactoryWithOptions(cs, resync, informers.WithNamespace(opts.Namespace)) - return NewFactory(cs, informerFactory), nil -} - -func NewFactory(clientset clientset.Interface, informerFactory informers.SharedInformerFactory) *Factory { - return &Factory{ - threadiness: map[schema.GroupVersionKind]int{}, - controllerManager: &generic.ControllerManager{}, - clientset: clientset, - informerFactory: informerFactory, - } -} - -func (c *Factory) Controllers() map[schema.GroupVersionKind]*generic.Controller { - return c.controllerManager.Controllers() -} - -func (c *Factory) SetThreadiness(gvk schema.GroupVersionKind, threadiness int) { - c.threadiness[gvk] = threadiness -} - -func (c *Factory) Sync(ctx context.Context) error { - c.informerFactory.Start(ctx.Done()) - c.informerFactory.WaitForCacheSync(ctx.Done()) - return nil -} - -func (c *Factory) Start(ctx context.Context, defaultThreadiness int) error { - if err := c.Sync(ctx); err != nil { - return err - } - - return c.controllerManager.Start(ctx, defaultThreadiness, c.threadiness) -} - -func (c *Factory) Batch() Interface { - return New(c.controllerManager, c.informerFactory.Batch(), c.clientset) -} diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/factory.go b/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/factory.go deleted file mode 100644 index e4d841ea6498..000000000000 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/factory.go +++ /dev/null @@ -1,126 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package core - -import ( - "context" - "time" - - "github.com/rancher/wrangler/pkg/generic" - "github.com/rancher/wrangler/pkg/schemes" - "k8s.io/apimachinery/pkg/runtime/schema" - informers "k8s.io/client-go/informers" - clientset "k8s.io/client-go/kubernetes" - scheme "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" -) - -func init() { - scheme.AddToScheme(schemes.All) -} - -type Factory struct { - synced bool - informerFactory informers.SharedInformerFactory - clientset clientset.Interface - controllerManager *generic.ControllerManager - threadiness map[schema.GroupVersionKind]int -} - -func NewFactoryFromConfigOrDie(config *rest.Config) *Factory { - f, err := NewFactoryFromConfig(config) - if err != nil { - panic(err) - } - return f -} - -func NewFactoryFromConfig(config *rest.Config) (*Factory, error) { - return NewFactoryFromConfigWithOptions(config, nil) -} - -func NewFactoryFromConfigWithNamespace(config *rest.Config, namespace string) (*Factory, error) { - return NewFactoryFromConfigWithOptions(config, &FactoryOptions{ - Namespace: namespace, - }) -} - -type FactoryOptions struct { - Namespace string - Resync time.Duration -} - -func NewFactoryFromConfigWithOptions(config *rest.Config, opts *FactoryOptions) (*Factory, error) { - if opts == nil { - opts = &FactoryOptions{} - } - - cs, err := clientset.NewForConfig(config) - if err != nil { - return nil, err - } - - resync := opts.Resync - if resync == 0 { - resync = 2 * time.Hour - } - - if opts.Namespace == "" { - informerFactory := informers.NewSharedInformerFactory(cs, resync) - return NewFactory(cs, informerFactory), nil - } - - informerFactory := informers.NewSharedInformerFactoryWithOptions(cs, resync, informers.WithNamespace(opts.Namespace)) - return NewFactory(cs, informerFactory), nil -} - -func NewFactory(clientset clientset.Interface, informerFactory informers.SharedInformerFactory) *Factory { - return &Factory{ - threadiness: map[schema.GroupVersionKind]int{}, - controllerManager: &generic.ControllerManager{}, - clientset: clientset, - informerFactory: informerFactory, - } -} - -func (c *Factory) Controllers() map[schema.GroupVersionKind]*generic.Controller { - return c.controllerManager.Controllers() -} - -func (c *Factory) SetThreadiness(gvk schema.GroupVersionKind, threadiness int) { - c.threadiness[gvk] = threadiness -} - -func (c *Factory) Sync(ctx context.Context) error { - c.informerFactory.Start(ctx.Done()) - c.informerFactory.WaitForCacheSync(ctx.Done()) - return nil -} - -func (c *Factory) Start(ctx context.Context, defaultThreadiness int) error { - if err := c.Sync(ctx); err != nil { - return err - } - - return c.controllerManager.Start(ctx, defaultThreadiness, c.threadiness) -} - -func (c *Factory) Core() Interface { - return New(c.controllerManager, c.informerFactory.Core(), c.clientset) -} diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/interface.go b/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/interface.go deleted file mode 100644 index 92fc1c6ec069..000000000000 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/interface.go +++ /dev/null @@ -1,85 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package v1 - -import ( - "github.com/rancher/wrangler/pkg/generic" - v1 "k8s.io/api/core/v1" - informers "k8s.io/client-go/informers/core/v1" - clientset "k8s.io/client-go/kubernetes/typed/core/v1" -) - -type Interface interface { - ConfigMap() ConfigMapController - Endpoints() EndpointsController - Event() EventController - Namespace() NamespaceController - Node() NodeController - PersistentVolumeClaim() PersistentVolumeClaimController - Pod() PodController - Secret() SecretController - Service() ServiceController - ServiceAccount() ServiceAccountController -} - -func New(controllerManager *generic.ControllerManager, client clientset.CoreV1Interface, - informers informers.Interface) Interface { - return &version{ - controllerManager: controllerManager, - client: client, - informers: informers, - } -} - -type version struct { - controllerManager *generic.ControllerManager - informers informers.Interface - client clientset.CoreV1Interface -} - -func (c *version) ConfigMap() ConfigMapController { - return NewConfigMapController(v1.SchemeGroupVersion.WithKind("ConfigMap"), c.controllerManager, c.client, c.informers.ConfigMaps()) -} -func (c *version) Endpoints() EndpointsController { - return NewEndpointsController(v1.SchemeGroupVersion.WithKind("Endpoints"), c.controllerManager, c.client, c.informers.Endpoints()) -} -func (c *version) Event() EventController { - return NewEventController(v1.SchemeGroupVersion.WithKind("Event"), c.controllerManager, c.client, c.informers.Events()) -} -func (c *version) Namespace() NamespaceController { - return NewNamespaceController(v1.SchemeGroupVersion.WithKind("Namespace"), c.controllerManager, c.client, c.informers.Namespaces()) -} -func (c *version) Node() NodeController { - return NewNodeController(v1.SchemeGroupVersion.WithKind("Node"), c.controllerManager, c.client, c.informers.Nodes()) -} -func (c *version) PersistentVolumeClaim() PersistentVolumeClaimController { - return NewPersistentVolumeClaimController(v1.SchemeGroupVersion.WithKind("PersistentVolumeClaim"), c.controllerManager, c.client, c.informers.PersistentVolumeClaims()) -} -func (c *version) Pod() PodController { - return NewPodController(v1.SchemeGroupVersion.WithKind("Pod"), c.controllerManager, c.client, c.informers.Pods()) -} -func (c *version) Secret() SecretController { - return NewSecretController(v1.SchemeGroupVersion.WithKind("Secret"), c.controllerManager, c.client, c.informers.Secrets()) -} -func (c *version) Service() ServiceController { - return NewServiceController(v1.SchemeGroupVersion.WithKind("Service"), c.controllerManager, c.client, c.informers.Services()) -} -func (c *version) ServiceAccount() ServiceAccountController { - return NewServiceAccountController(v1.SchemeGroupVersion.WithKind("ServiceAccount"), c.controllerManager, c.client, c.informers.ServiceAccounts()) -} diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/factory.go b/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/factory.go deleted file mode 100644 index 1ae7c9f52eb8..000000000000 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/factory.go +++ /dev/null @@ -1,126 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by main. DO NOT EDIT. - -package rbac - -import ( - "context" - "time" - - "github.com/rancher/wrangler/pkg/generic" - "github.com/rancher/wrangler/pkg/schemes" - "k8s.io/apimachinery/pkg/runtime/schema" - informers "k8s.io/client-go/informers" - clientset "k8s.io/client-go/kubernetes" - scheme "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" -) - -func init() { - scheme.AddToScheme(schemes.All) -} - -type Factory struct { - synced bool - informerFactory informers.SharedInformerFactory - clientset clientset.Interface - controllerManager *generic.ControllerManager - threadiness map[schema.GroupVersionKind]int -} - -func NewFactoryFromConfigOrDie(config *rest.Config) *Factory { - f, err := NewFactoryFromConfig(config) - if err != nil { - panic(err) - } - return f -} - -func NewFactoryFromConfig(config *rest.Config) (*Factory, error) { - return NewFactoryFromConfigWithOptions(config, nil) -} - -func NewFactoryFromConfigWithNamespace(config *rest.Config, namespace string) (*Factory, error) { - return NewFactoryFromConfigWithOptions(config, &FactoryOptions{ - Namespace: namespace, - }) -} - -type FactoryOptions struct { - Namespace string - Resync time.Duration -} - -func NewFactoryFromConfigWithOptions(config *rest.Config, opts *FactoryOptions) (*Factory, error) { - if opts == nil { - opts = &FactoryOptions{} - } - - cs, err := clientset.NewForConfig(config) - if err != nil { - return nil, err - } - - resync := opts.Resync - if resync == 0 { - resync = 2 * time.Hour - } - - if opts.Namespace == "" { - informerFactory := informers.NewSharedInformerFactory(cs, resync) - return NewFactory(cs, informerFactory), nil - } - - informerFactory := informers.NewSharedInformerFactoryWithOptions(cs, resync, informers.WithNamespace(opts.Namespace)) - return NewFactory(cs, informerFactory), nil -} - -func NewFactory(clientset clientset.Interface, informerFactory informers.SharedInformerFactory) *Factory { - return &Factory{ - threadiness: map[schema.GroupVersionKind]int{}, - controllerManager: &generic.ControllerManager{}, - clientset: clientset, - informerFactory: informerFactory, - } -} - -func (c *Factory) Controllers() map[schema.GroupVersionKind]*generic.Controller { - return c.controllerManager.Controllers() -} - -func (c *Factory) SetThreadiness(gvk schema.GroupVersionKind, threadiness int) { - c.threadiness[gvk] = threadiness -} - -func (c *Factory) Sync(ctx context.Context) error { - c.informerFactory.Start(ctx.Done()) - c.informerFactory.WaitForCacheSync(ctx.Done()) - return nil -} - -func (c *Factory) Start(ctx context.Context, defaultThreadiness int) error { - if err := c.Sync(ctx); err != nil { - return err - } - - return c.controllerManager.Start(ctx, defaultThreadiness, c.threadiness) -} - -func (c *Factory) Rbac() Interface { - return New(c.controllerManager, c.informerFactory.Rbac(), c.clientset) -} diff --git a/vendor/github.com/rancher/wrangler/pkg/apply/desiredset_apply.go b/vendor/github.com/rancher/wrangler/pkg/apply/desiredset_apply.go index e297fc795dd2..b3e7a91a054b 100644 --- a/vendor/github.com/rancher/wrangler/pkg/apply/desiredset_apply.go +++ b/vendor/github.com/rancher/wrangler/pkg/apply/desiredset_apply.go @@ -5,13 +5,15 @@ import ( "encoding/hex" "fmt" "sync" + "time" + + "github.com/sirupsen/logrus" gvk2 "github.com/rancher/wrangler/pkg/gvk" "github.com/pkg/errors" "github.com/rancher/wrangler/pkg/apply/injectors" "github.com/rancher/wrangler/pkg/objectset" - errors2 "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" @@ -83,8 +85,12 @@ func (o *desiredSet) apply() error { } rl := o.getRateLimit(labelSet[LabelHash]) - if rl != nil && !rl.TryAccept() { - return errors2.NewConflict(schema.GroupResource{}, o.setID, errors.New("delaying object set")) + if rl != nil { + t := time.Now() + rl.Accept() + if d := time.Now().Sub(t); d.Seconds() > 1 { + logrus.Infof("rate limited %s(%s) %s", o.setID, labelSet, d) + } } objList, err := o.injectLabelsAndAnnotations(labelSet, annotationSet) diff --git a/vendor/github.com/rancher/wrangler/pkg/controller-gen/args/args.go b/vendor/github.com/rancher/wrangler/pkg/controller-gen/args/args.go index fc176704ca65..f08fc528b950 100644 --- a/vendor/github.com/rancher/wrangler/pkg/controller-gen/args/args.go +++ b/vendor/github.com/rancher/wrangler/pkg/controller-gen/args/args.go @@ -18,11 +18,29 @@ type Options struct { Boilerplate string } +type Type struct { + Version string + Package string + Name string +} + type Group struct { - Types []interface{} - GenerateTypes bool - GenerateClients bool - PackageName string + // Types is a slice of the following types + // Instance of any struct: used for reflection to describe the type + // string: a directory that will be listed (non-recursively) for types + // Type: a description of a type + Types []interface{} + GenerateTypes bool + // Generate clientsets + GenerateClients bool + OutputControllerPackageName string + // Generate listers + GenerateListers bool + // Generate informers + GenerateInformers bool + // The package name of the API types + PackageName string + // Use existing clientset, informer, listers ClientSetPackage string ListersPackage string InformersPackage string diff --git a/vendor/github.com/rancher/wrangler/pkg/controller-gen/args/groupversion.go b/vendor/github.com/rancher/wrangler/pkg/controller-gen/args/groupversion.go index becf16f92944..40cc78be309e 100644 --- a/vendor/github.com/rancher/wrangler/pkg/controller-gen/args/groupversion.go +++ b/vendor/github.com/rancher/wrangler/pkg/controller-gen/args/groupversion.go @@ -1,12 +1,14 @@ package args import ( + gotypes "go/types" "reflect" + "sort" "strings" - "k8s.io/code-generator/cmd/client-gen/generators/util" - + "golang.org/x/tools/go/packages" "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/code-generator/cmd/client-gen/generators/util" "k8s.io/code-generator/cmd/client-gen/path" "k8s.io/gengo/types" ) @@ -19,8 +21,26 @@ const ( objectComment = "+k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object" ) -func ObjectsToGroupVersion(group string, objs []interface{}, ret map[schema.GroupVersion][]*types.Name) { +func translate(types []Type, err error) (result []interface{}, _ error) { + for _, v := range types { + result = append(result, v) + } + return result, err +} + +func ObjectsToGroupVersion(group string, objs []interface{}, ret map[schema.GroupVersion][]*types.Name) error { for _, obj := range objs { + if s, ok := obj.(string); ok { + types, err := translate(ScanDirectory(s)) + if err != nil { + return err + } + if err := ObjectsToGroupVersion(group, types, ret); err != nil { + return err + } + continue + } + version, t := toVersionType(obj) gv := schema.GroupVersion{ Group: group, @@ -28,21 +48,40 @@ func ObjectsToGroupVersion(group string, objs []interface{}, ret map[schema.Grou } ret[gv] = append(ret[gv], t) } + + return nil } func toVersionType(obj interface{}) (string, *types.Name) { + switch v := obj.(type) { + case Type: + return v.Version, &types.Name{ + Package: v.Package, + Name: v.Name, + } + case *Type: + return v.Version, &types.Name{ + Package: v.Package, + Name: v.Name, + } + } + t := reflect.TypeOf(obj) if t.Kind() == reflect.Ptr { t = t.Elem() } pkg := path.Vendorless(t.PkgPath()) - parts := strings.Split(pkg, "/") - return parts[len(parts)-1], &types.Name{ + return versionFromPackage(pkg), &types.Name{ Package: pkg, Name: t.Name(), } } +func versionFromPackage(pkg string) string { + parts := strings.Split(pkg, "/") + return parts[len(parts)-1] +} + func CheckType(passedType *types.Type) { tags := util.MustParseClientGenTags(passedType.SecondClosestCommentLines) if !tags.GenerateClient { @@ -58,3 +97,38 @@ func CheckType(passedType *types.Type) { panic("Type " + passedType.String() + " is missing comment " + objectComment) } } + +func ScanDirectory(pkgPath string) (result []Type, err error) { + pkgs, err := packages.Load(&packages.Config{ + Mode: packages.NeedName | packages.NeedTypes | packages.NeedTypesInfo | packages.NeedSyntax, + Dir: pkgPath, + }) + if err != nil { + return nil, err + } + for _, v := range pkgs[0].TypesInfo.Defs { + typeAndName, ok := v.(*gotypes.TypeName) + if !ok { + continue + } + s, ok := typeAndName.Type().Underlying().(*gotypes.Struct) + if !ok { + continue + } + for i := 0; i < s.NumFields(); i++ { + f := s.Field(i) + if f.Embedded() && f.Type().String() == "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta" { + pkgPath := path.Vendorless(pkgs[0].PkgPath) + result = append(result, Type{ + Package: pkgPath, + Version: versionFromPackage(pkgPath), + Name: typeAndName.Name(), + }) + } + } + } + sort.Slice(result, func(i, j int) bool { + return result[i].Name < result[j].Name + }) + return +} diff --git a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/client_generator.go b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/client_generator.go index bf79fa9c36e5..8eb02cab743e 100644 --- a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/client_generator.go +++ b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/client_generator.go @@ -14,33 +14,20 @@ See the License for the specific language governing permissions and limitations under the License. */ -// Package generators has the generators for the client-gen utility. package generators import ( "fmt" "path/filepath" - "regexp" "strings" args2 "github.com/rancher/wrangler/pkg/controller-gen/args" - "golang.org/x/tools/imports" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/gengo/args" "k8s.io/gengo/generator" "k8s.io/gengo/types" ) -var ( - underscoreRegexp = regexp.MustCompile(`([a-z])([A-Z])`) - goImportOpts = &imports.Options{ - TabWidth: 8, - TabIndent: true, - Comments: true, - Fragment: true, - } -) - type ClientGenerator struct { Fakes map[string][]string } @@ -83,7 +70,7 @@ func (cg *ClientGenerator) Packages(context *generator.Context, arguments *args. } } - return generator.Packages(packageList) + return packageList } func (cg *ClientGenerator) typesGroupPackage(name *types.Name, gv schema.GroupVersion, generatorArgs *args.GeneratorArgs, customArgs *args2.CustomArgs) generator.Package { @@ -127,7 +114,7 @@ func (cg *ClientGenerator) typesGroupVersionPackage(name *types.Name, gv schema. } func (cg *ClientGenerator) groupPackage(group string, generatorArgs *args.GeneratorArgs, customArgs *args2.CustomArgs) generator.Package { - packagePath := filepath.Join(customArgs.Package, "controllers", groupPackageName(group, "")) + packagePath := filepath.Join(customArgs.Package, "controllers", groupPackageName(group, customArgs.Options.Groups[group].OutputControllerPackageName)) return Package(generatorArgs, packagePath, func(context *generator.Context) []generator.Generator { return []generator.Generator{ FactoryGo(group, generatorArgs, customArgs), @@ -137,7 +124,7 @@ func (cg *ClientGenerator) groupPackage(group string, generatorArgs *args.Genera } func (cg *ClientGenerator) groupVersionPackage(gv schema.GroupVersion, generatorArgs *args.GeneratorArgs, customArgs *args2.CustomArgs) generator.Package { - packagePath := filepath.Join(customArgs.Package, "controllers", groupPackageName(gv.Group, ""), gv.Version) + packagePath := filepath.Join(customArgs.Package, "controllers", groupPackageName(gv.Group, customArgs.Options.Groups[gv.Group].OutputControllerPackageName), gv.Version) return Package(generatorArgs, packagePath, func(context *generator.Context) []generator.Generator { generators := []generator.Generator{ diff --git a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/factory_go.go b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/factory_go.go index 723f030c333e..11e4a9fff3de 100644 --- a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/factory_go.go +++ b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/factory_go.go @@ -3,7 +3,6 @@ package generators import ( "fmt" "io" - "path/filepath" args2 "github.com/rancher/wrangler/pkg/controller-gen/args" "k8s.io/gengo/args" @@ -31,19 +30,16 @@ type factory struct { } func (f *factory) Imports(*generator.Context) []string { - group := f.customArgs.Options.Groups[f.group] - - return []string{ - "context", - "time", - "k8s.io/apimachinery/pkg/runtime/schema", - "k8s.io/client-go/rest", - GenericPackage, - AllSchemes, - fmt.Sprintf("clientset \"%s\"", group.ClientSetPackage), - fmt.Sprintf("scheme \"%s\"", filepath.Join(group.ClientSetPackage, "scheme")), - fmt.Sprintf("informers \"%s\"", group.InformersPackage), + imports := Imports + + for gv, types := range f.customArgs.TypesByGroup { + if f.group == gv.Group && len(types) > 0 { + imports = append(imports, + fmt.Sprintf("%s \"%s\"", gv.Version, types[0].Package)) + } } + + return imports } func (f *factory) Init(c *generator.Context, w io.Writer) error { @@ -56,24 +52,16 @@ func (f *factory) Init(c *generator.Context, w io.Writer) error { "groupName": upperLowercase(f.group), } - sw.Do("func (c *Factory) {{.groupName}}() Interface {\n", m) - sw.Do(" return New(c.controllerManager, c.informerFactory.{{.groupName}}(), c.clientset)\n", m) - sw.Do("}\n", m) + sw.Do("\n\nfunc (c *Factory) {{.groupName}}() Interface {\n", m) + sw.Do(" return New(c.ControllerFactory())\n", m) + sw.Do("}\n\n", m) return sw.Error() } var factoryBody = ` -func init() { - scheme.AddToScheme(schemes.All) -} - type Factory struct { - synced bool - informerFactory informers.SharedInformerFactory - clientset clientset.Interface - controllerManager *generic.ControllerManager - threadiness map[schema.GroupVersionKind]int + *generic.Factory } func NewFactoryFromConfigOrDie(config *rest.Config) *Factory { @@ -94,65 +82,13 @@ func NewFactoryFromConfigWithNamespace(config *rest.Config, namespace string) (* }) } -type FactoryOptions struct { - Namespace string - Resync time.Duration -} +type FactoryOptions = generic.FactoryOptions func NewFactoryFromConfigWithOptions(config *rest.Config, opts *FactoryOptions) (*Factory, error) { - if opts == nil { - opts = &FactoryOptions{} - } - - cs, err := clientset.NewForConfig(config) - if err != nil { - return nil, err - } - - resync := opts.Resync - if resync == 0 { - resync = 2*time.Hour - } - - if opts.Namespace == "" { - informerFactory := informers.NewSharedInformerFactory(cs, resync) - return NewFactory(cs, informerFactory), nil - } - - informerFactory := informers.NewSharedInformerFactoryWithOptions(cs, resync, informers.WithNamespace(opts.Namespace)) - return NewFactory(cs, informerFactory), nil -} - - -func NewFactory(clientset clientset.Interface, informerFactory informers.SharedInformerFactory) *Factory { + f, err := generic.NewFactoryFromConfigWithOptions(config, opts) return &Factory{ - threadiness: map[schema.GroupVersionKind]int{}, - controllerManager: &generic.ControllerManager{}, - clientset: clientset, - informerFactory: informerFactory, - } -} - -func (c *Factory) Controllers() map[schema.GroupVersionKind]*generic.Controller { - return c.controllerManager.Controllers() -} - -func (c *Factory) SetThreadiness(gvk schema.GroupVersionKind, threadiness int) { - c.threadiness[gvk] = threadiness -} - -func (c *Factory) Sync(ctx context.Context) error { - c.informerFactory.Start(ctx.Done()) - c.informerFactory.WaitForCacheSync(ctx.Done()) - return nil -} - -func (c *Factory) Start(ctx context.Context, defaultThreadiness int) error { - if err := c.Sync(ctx); err != nil { - return err - } - - return c.controllerManager.Start(ctx, defaultThreadiness, c.threadiness) + Factory: f, + }, err } ` diff --git a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/group_interface_go.go b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/group_interface_go.go index 77d4120afa86..d682796c1004 100644 --- a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/group_interface_go.go +++ b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/group_interface_go.go @@ -30,21 +30,15 @@ type interfaceGo struct { customArgs *args2.CustomArgs } -func (f *interfaceGo) Imports(*generator.Context) []string { - group := f.customArgs.Options.Groups[f.group] - - packages := []string{ - GenericPackage, - fmt.Sprintf("clientset \"%s\"", group.ClientSetPackage), - fmt.Sprintf("informers \"%s/%s\"", group.InformersPackage, groupPackageName(f.group, group.PackageName)), - } +func (f *interfaceGo) Imports(context *generator.Context) []string { + packages := Imports for gv := range f.customArgs.TypesByGroup { if gv.Group != f.group { continue } - - packages = append(packages, fmt.Sprintf("%s \"%s/controllers/%s/%s\"", gv.Version, f.customArgs.Package, groupPackageName(gv.Group, ""), gv.Version)) + packages = append(packages, fmt.Sprintf("%s \"%s/controllers/%s/%s\"", gv.Version, f.customArgs.Package, + groupPackageName(gv.Group, f.customArgs.Options.Groups[gv.Group].OutputControllerPackageName), gv.Version)) } return packages @@ -80,7 +74,7 @@ func (f *interfaceGo) Init(c *generator.Context, w io.Writer) error { "version": gv.Version, } sw.Do("\nfunc (g *group) {{.upperVersion}}() {{.version}}.Interface {\n", m) - sw.Do("return {{.version}}.New(g.controllerManager, g.client.{{.upperGroup}}{{.upperVersion}}(), g.informers.{{.upperVersion}}())\n", m) + sw.Do("return {{.version}}.New(g.controllerFactory)\n", m) sw.Do("}\n", m) } @@ -89,18 +83,13 @@ func (f *interfaceGo) Init(c *generator.Context, w io.Writer) error { var interfaceBody = ` type group struct { - controllerManager *generic.ControllerManager - informers informers.Interface - client clientset.Interface + controllerFactory controller.SharedControllerFactory } // New returns a new Interface. -func New(controllerManager *generic.ControllerManager, informers informers.Interface, - client clientset.Interface) Interface { +func New(controllerFactory controller.SharedControllerFactory) Interface { return &group{ - controllerManager: controllerManager, - informers: informers, - client: client, + controllerFactory: controllerFactory, } } ` diff --git a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/group_version_interface_go.go b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/group_version_interface_go.go index 379e8d580a36..1b2f806cdc29 100644 --- a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/group_version_interface_go.go +++ b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/group_version_interface_go.go @@ -3,6 +3,7 @@ package generators import ( "fmt" "io" + "strings" args2 "github.com/rancher/wrangler/pkg/controller-gen/args" "k8s.io/apimachinery/pkg/runtime/schema" @@ -31,16 +32,11 @@ type groupInterfaceGo struct { customArgs *args2.CustomArgs } -func (f *groupInterfaceGo) Imports(*generator.Context) []string { +func (f *groupInterfaceGo) Imports(context *generator.Context) []string { firstType := f.customArgs.TypesByGroup[f.gv][0] - group := f.customArgs.Options.Groups[f.gv.Group] - packages := []string{ - GenericPackage, - fmt.Sprintf("%s \"%s\"", f.gv.Version, firstType.Package), - fmt.Sprintf("clientset \"%s/typed/%s/%s\"", group.ClientSetPackage, groupPackageName(f.gv.Group, group.PackageName), f.gv.Version), - fmt.Sprintf("informers \"%s/%s/%s\"", group.InformersPackage, groupPackageName(f.gv.Group, group.PackageName), f.gv.Version), - } + packages := append(Imports, + fmt.Sprintf("%s \"%s\"", f.gv.Version, firstType.Package)) return packages } @@ -63,6 +59,10 @@ func (f *groupInterfaceGo) Init(c *generator.Context, w io.Writer) error { } types = orderer.OrderTypes(types) + sw.Do("func init() {\n", nil) + sw.Do("schemes.Register("+f.gv.Version+".AddToScheme)\n", nil) + sw.Do("}\n", nil) + sw.Do("type Interface interface {\n", nil) for _, t := range types { m := map[string]interface{}{ @@ -83,13 +83,16 @@ func (f *groupInterfaceGo) Init(c *generator.Context, w io.Writer) error { m := map[string]interface{}{ "type": t.Name.Name, "plural": plural.Name(t), + "pluralLower": strings.ToLower(plural.Name(t)), "version": f.gv.Version, + "group": f.gv.Group, + "namespaced": namespaced(t), "versionUpper": namer.IC(f.gv.Version), "groupUpper": upperLowercase(f.gv.Group), } sw.Do("func (c *version) {{.type}}() {{.type}}Controller {\n", m) - sw.Do("return New{{.type}}Controller({{.version}}.SchemeGroupVersion.WithKind(\"{{.type}}\"), c.controllerManager, c.client, c.informers.{{.plural}}())\n", m) + sw.Do("return New{{.type}}Controller(schema.GroupVersionKind{Group:\"{{.group}}\",Version:\"{{.version}}\",Kind:\"{{.type}}\"} , \"{{.pluralLower}}\", {{.namespaced}}, c.controllerFactory)\n", m) sw.Do("}\n", m) } @@ -97,19 +100,14 @@ func (f *groupInterfaceGo) Init(c *generator.Context, w io.Writer) error { } var groupInterfaceBody = ` -func New(controllerManager *generic.ControllerManager, client clientset.{{.groupUpper}}{{.versionUpper}}Interface, - informers informers.Interface) Interface { +func New(controllerFactory controller.SharedControllerFactory) Interface { return &version{ - controllerManager: controllerManager, - client: client, - informers: informers, + controllerFactory: controllerFactory, } } type version struct { - controllerManager *generic.ControllerManager - informers informers.Interface - client clientset.{{.groupUpper}}{{.versionUpper}}Interface + controllerFactory controller.SharedControllerFactory } ` diff --git a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/list_type_go.go b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/list_type_go.go index 4968d04ca95c..dbef39e58e0e 100644 --- a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/list_type_go.go +++ b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/list_type_go.go @@ -29,11 +29,7 @@ type listTypesGo struct { } func (f *listTypesGo) Imports(*generator.Context) []string { - packages := []string{ - "metav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"", - } - - return packages + return Imports } func (f *listTypesGo) Init(c *generator.Context, w io.Writer) error { diff --git a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/register_group_version_go.go b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/register_group_version_go.go index 3b7d6c906cf8..cfd7b42e8b9f 100644 --- a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/register_group_version_go.go +++ b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/register_group_version_go.go @@ -37,12 +37,8 @@ func (f *registerGroupVersionGo) Imports(*generator.Context) []string { firstType := f.customArgs.TypesByGroup[f.gv][0] typeGroupPath := strings.TrimSuffix(firstType.Package, "/"+f.gv.Version) - packages := []string{ - "metav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"", - "k8s.io/apimachinery/pkg/runtime", - "k8s.io/apimachinery/pkg/runtime/schema", - fmt.Sprintf("%s \"%s\"", groupPath(f.gv.Group), typeGroupPath), - } + packages := append(Imports, + fmt.Sprintf("%s \"%s\"", groupPath(f.gv.Group), typeGroupPath)) return packages } diff --git a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/type_go.go b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/type_go.go index 4d96c0b5c178..c784bf5bebe4 100644 --- a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/type_go.go +++ b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/type_go.go @@ -7,7 +7,6 @@ import ( args2 "github.com/rancher/wrangler/pkg/controller-gen/args" "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/code-generator/cmd/client-gen/generators/util" "k8s.io/gengo/args" "k8s.io/gengo/generator" "k8s.io/gengo/namer" @@ -35,28 +34,9 @@ type typeGo struct { customArgs *args2.CustomArgs } -func (f *typeGo) Imports(*generator.Context) []string { - group := f.customArgs.Options.Groups[f.gv.Group] - - packages := []string{ - "metav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"", - "k8s.io/apimachinery/pkg/api/errors", - "k8s.io/apimachinery/pkg/labels", - "k8s.io/apimachinery/pkg/runtime", - "k8s.io/apimachinery/pkg/runtime/schema", - "k8s.io/apimachinery/pkg/api/equality", - "k8s.io/apimachinery/pkg/types", - "utilruntime \"k8s.io/apimachinery/pkg/util/runtime\"", - "k8s.io/apimachinery/pkg/watch", - "k8s.io/client-go/tools/cache", - "github.com/rancher/wrangler/pkg/apply", - "github.com/rancher/wrangler/pkg/condition", - fmt.Sprintf("%s \"%s\"", f.gv.Version, f.name.Package), - GenericPackage, - fmt.Sprintf("clientset \"%s/typed/%s/%s\"", group.ClientSetPackage, groupPackageName(f.gv.Group, group.PackageName), f.gv.Version), - fmt.Sprintf("informers \"%s/%s/%s\"", group.InformersPackage, groupPackageName(f.gv.Group, group.PackageName), f.gv.Version), - fmt.Sprintf("listers \"%s/%s/%s\"", group.ListersPackage, groupPackageName(f.gv.Group, group.PackageName), f.gv.Version), - } +func (f *typeGo) Imports(context *generator.Context) []string { + packages := append(Imports, + fmt.Sprintf("%s \"%s\"", f.gv.Version, f.name.Package)) return packages } @@ -74,7 +54,7 @@ func (f *typeGo) Init(c *generator.Context, w io.Writer) error { "lowerName": namer.IL(f.name.Name), "plural": plural.Name(t), "version": f.gv.Version, - "namespaced": !util.MustParseClientGenTags(t.SecondClosestCommentLines).NonNamespaced, + "namespaced": namespaced(t), "hasStatus": hasStatus(t), "statusType": statusType(t), } @@ -140,18 +120,22 @@ type {{.type}}Cache interface { type {{.type}}Indexer func(obj *{{.version}}.{{.type}}) ([]string, error) type {{.lowerName}}Controller struct { - controllerManager *generic.ControllerManager - clientGetter clientset.{{.plural}}Getter - informer informers.{{.type}}Informer + controller controller.SharedController + client *client.Client gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func New{{.type}}Controller(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.{{.plural}}Getter, informer informers.{{.type}}Informer) {{.type}}Controller { +func New{{.type}}Controller(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) {{.type}}Controller { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &{{.lowerName}}Controller{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -198,12 +182,11 @@ func Update{{.type}}DeepCopyOnChange(client {{.type}}Client, obj *{{.version}}.{ } func (c *{{.lowerName}}Controller) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *{{.lowerName}}Controller) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *{{.lowerName}}Controller) OnChange(ctx context.Context, name string, sync {{.type}}Handler) { @@ -211,20 +194,19 @@ func (c *{{.lowerName}}Controller) OnChange(ctx context.Context, name string, sy } func (c *{{.lowerName}}Controller) OnRemove(ctx context.Context, name string, sync {{.type}}Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), From{{.type}}HandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), From{{.type}}HandlerToHandler(sync))) } func (c *{{.lowerName}}Controller) Enqueue({{ if .namespaced}}namespace, {{end}}name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), {{ if .namespaced }}namespace, {{else}}"", {{end}}name) + c.controller.Enqueue({{ if .namespaced }}namespace, {{else}}"", {{end}}name) } func (c *{{.lowerName}}Controller) EnqueueAfter({{ if .namespaced}}namespace, {{end}}name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), {{ if .namespaced }}namespace, {{else}}"", {{end}}name, duration) + c.controller.EnqueueAfter({{ if .namespaced }}namespace, {{else}}"", {{end}}name, duration) } func (c *{{.lowerName}}Controller) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *{{.lowerName}}Controller) GroupVersionKind() schema.GroupVersionKind { @@ -233,22 +215,25 @@ func (c *{{.lowerName}}Controller) GroupVersionKind() schema.GroupVersionKind { func (c *{{.lowerName}}Controller) Cache() {{.type}}Cache { return &{{.lowerName}}Cache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *{{.lowerName}}Controller) Create(obj *{{.version}}.{{.type}}) (*{{.version}}.{{.type}}, error) { - return c.clientGetter.{{.plural}}({{ if .namespaced}}obj.Namespace{{end}}).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &{{.version}}.{{.type}}{} + return result, c.client.Create(context.TODO(), {{ if .namespaced}}obj.Namespace,{{else}}"",{{end}} obj, result, metav1.CreateOptions{}) } func (c *{{.lowerName}}Controller) Update(obj *{{.version}}.{{.type}}) (*{{.version}}.{{.type}}, error) { - return c.clientGetter.{{.plural}}({{ if .namespaced}}obj.Namespace{{end}}).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &{{.version}}.{{.type}}{} + return result, c.client.Update(context.TODO(), {{ if .namespaced}}obj.Namespace,{{else}}"",{{end}} obj, result, metav1.UpdateOptions{}) } {{ if .hasStatus -}} func (c *{{.lowerName}}Controller) UpdateStatus(obj *{{.version}}.{{.type}}) (*{{.version}}.{{.type}}, error) { - return c.clientGetter.{{.plural}}({{ if .namespaced}}obj.Namespace{{end}}).UpdateStatus(context.TODO(), obj, metav1.UpdateOptions{}) + result := &{{.version}}.{{.type}}{} + return result, c.client.UpdateStatus(context.TODO(), {{ if .namespaced}}obj.Namespace,{{else}}"",{{end}} obj, result, metav1.UpdateOptions{}) } {{- end }} @@ -256,36 +241,55 @@ func (c *{{.lowerName}}Controller) Delete({{ if .namespaced}}namespace, {{end}}n if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.{{.plural}}({{ if .namespaced}}namespace{{end}}).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), {{ if .namespaced}}namespace,{{else}}"",{{end}} name, *options) } func (c *{{.lowerName}}Controller) Get({{ if .namespaced}}namespace, {{end}}name string, options metav1.GetOptions) (*{{.version}}.{{.type}}, error) { - return c.clientGetter.{{.plural}}({{ if .namespaced}}namespace{{end}}).Get(context.TODO(), name, options) + result := &{{.version}}.{{.type}}{} + return result, c.client.Get(context.TODO(), {{ if .namespaced}}namespace,{{else}}"",{{end}} name, result, options) } func (c *{{.lowerName}}Controller) List({{ if .namespaced}}namespace string, {{end}}opts metav1.ListOptions) (*{{.version}}.{{.type}}List, error) { - return c.clientGetter.{{.plural}}({{ if .namespaced}}namespace{{end}}).List(context.TODO(), opts) + result := &{{.version}}.{{.type}}List{} + return result, c.client.List(context.TODO(), {{ if .namespaced}}namespace,{{else}}"",{{end}} result, opts) } func (c *{{.lowerName}}Controller) Watch({{ if .namespaced}}namespace string, {{end}}opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.{{.plural}}({{ if .namespaced}}namespace{{end}}).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), {{ if .namespaced}}namespace,{{else}}"",{{end}} opts) } -func (c *{{.lowerName}}Controller) Patch({{ if .namespaced}}namespace, {{end}}name string, pt types.PatchType, data []byte, subresources ...string) (result *{{.version}}.{{.type}}, err error) { - return c.clientGetter.{{.plural}}({{ if .namespaced}}namespace{{end}}).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *{{.lowerName}}Controller) Patch({{ if .namespaced}}namespace, {{end}}name string, pt types.PatchType, data []byte, subresources ...string) (*{{.version}}.{{.type}}, error) { + result := &{{.version}}.{{.type}}{} + return result, c.client.Patch(context.TODO(), {{ if .namespaced}}namespace,{{else}}"",{{end}} name, pt, data, result, metav1.PatchOptions{}, subresources...) } type {{.lowerName}}Cache struct { - lister listers.{{.type}}Lister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *{{.lowerName}}Cache) Get({{ if .namespaced}}namespace, {{end}}name string) (*{{.version}}.{{.type}}, error) { - return c.lister.{{ if .namespaced}}{{.plural}}(namespace).{{end}}Get(name) -} - -func (c *{{.lowerName}}Cache) List({{ if .namespaced}}namespace string, {{end}}selector labels.Selector) ([]*{{.version}}.{{.type}}, error) { - return c.lister.{{ if .namespaced}}{{.plural}}(namespace).{{end}}List(selector) + obj, exists, err := c.indexer.GetByKey({{ if .namespaced }}namespace + "/" + {{end}}name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*{{.version}}.{{.type}}), nil +} + +func (c *{{.lowerName}}Cache) List({{ if .namespaced}}namespace string, {{end}}selector labels.Selector) (ret []*{{.version}}.{{.type}}, err error) { + {{ if .namespaced }} + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*{{.version}}.{{.type}})) + }) + {{else}} + err = cache.ListAll(c.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*{{.version}}.{{.type}})) + }) + {{end}} + return ret, err } func (c *{{.lowerName}}Cache) AddIndexer(indexName string, indexer {{.type}}Indexer) { diff --git a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/util.go b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/util.go index a3ca741cbe0f..5458b07931fc 100644 --- a/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/util.go +++ b/vendor/github.com/rancher/wrangler/pkg/controller-gen/generators/util.go @@ -3,14 +3,54 @@ package generators import ( "strings" + "k8s.io/code-generator/cmd/client-gen/generators/util" "k8s.io/gengo/namer" + "k8s.io/gengo/types" ) -const ( - GenericPackage = "github.com/rancher/wrangler/pkg/generic" - AllSchemes = "github.com/rancher/wrangler/pkg/schemes" +var ( + Imports = []string{ + "context", + "time", + "k8s.io/client-go/rest", + "github.com/rancher/lasso/pkg/client", + "github.com/rancher/lasso/pkg/controller", + "github.com/rancher/wrangler/pkg/apply", + "github.com/rancher/wrangler/pkg/condition", + "github.com/rancher/wrangler/pkg/schemes", + "github.com/rancher/wrangler/pkg/generic", + "github.com/rancher/wrangler/pkg/kv", + "k8s.io/apimachinery/pkg/api/equality", + "k8s.io/apimachinery/pkg/api/errors", + "metav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\"", + "k8s.io/apimachinery/pkg/labels", + "k8s.io/apimachinery/pkg/runtime", + "k8s.io/apimachinery/pkg/runtime/schema", + "k8s.io/apimachinery/pkg/types", + "utilruntime \"k8s.io/apimachinery/pkg/util/runtime\"", + "k8s.io/apimachinery/pkg/watch", + "k8s.io/client-go/tools/cache", + } ) +func namespaced(t *types.Type) bool { + if util.MustParseClientGenTags(t.SecondClosestCommentLines).NonNamespaced { + return false + } + + kubeBuilder := false + for _, line := range t.SecondClosestCommentLines { + if strings.HasPrefix(line, "+kubebuilder:resource:path=") { + kubeBuilder = true + if strings.Contains(line, "scope=Namespaced") { + return true + } + } + } + + return !kubeBuilder +} + func groupPath(group string) string { g := strings.Replace(strings.Split(group, ".")[0], "-", "", -1) return groupPackageName(g, "") diff --git a/vendor/github.com/rancher/wrangler/pkg/controller-gen/main.go b/vendor/github.com/rancher/wrangler/pkg/controller-gen/main.go index d42b4cdb9c66..f74f509c8b2c 100644 --- a/vendor/github.com/rancher/wrangler/pkg/controller-gen/main.go +++ b/vendor/github.com/rancher/wrangler/pkg/controller-gen/main.go @@ -1,6 +1,7 @@ package controllergen import ( + "fmt" "io" "io/ioutil" "os" @@ -8,6 +9,8 @@ import ( "sort" "strings" + "k8s.io/gengo/generator" + cgargs "github.com/rancher/wrangler/pkg/controller-gen/args" "github.com/rancher/wrangler/pkg/controller-gen/generators" "github.com/sirupsen/logrus" @@ -64,22 +67,28 @@ func Run(opts cgargs.Options) { } groups := map[string]bool{} + listerGroups := map[string]bool{} + informerGroups := map[string]bool{} deepCopygroups := map[string]bool{} for groupName, group := range customArgs.Options.Groups { if group.GenerateTypes { deepCopygroups[groupName] = true - groups[groupName] = true } if group.GenerateClients { groups[groupName] = true } + if group.GenerateListers { + listerGroups[groupName] = true + } + if group.GenerateInformers { + informerGroups[groupName] = true + } } - if len(groups) == 0 { + if len(deepCopygroups) == 0 && len(groups) == 0 && len(listerGroups) == 0 && len(informerGroups) == 0 { if err := copyGoPathToModules(customArgs); err != nil { logrus.Fatalf("go modules copy failed: %v", err) } - return } @@ -95,11 +104,11 @@ func Run(opts cgargs.Options) { logrus.Fatalf("clientset failed: %v", err) } - if err := generateListers(groups, customArgs); err != nil { + if err := generateListers(listerGroups, customArgs); err != nil { logrus.Fatalf("listers failed: %v", err) } - if err := generateInformers(groups, customArgs); err != nil { + if err := generateInformers(informerGroups, customArgs); err != nil { logrus.Fatalf("informers failed: %v", err) } @@ -135,15 +144,11 @@ func copyGoPathToModules(customArgs *cgargs.CustomArgs) error { return filepath.Walk(pkg, func(path string, info os.FileInfo, err error) error { newPath := strings.Replace(path, pkg, ".", 1) - if _, err := os.Stat(newPath); os.IsNotExist(err) { - if info.IsDir() { - return os.Mkdir(newPath, info.Mode()) - } - - return copyFile(path, newPath) + if info.IsDir() { + return os.MkdirAll(newPath, info.Mode()) } - return err + return copyFile(path, newPath) }) } @@ -176,6 +181,10 @@ func copyFile(src, dst string) error { } func generateDeepcopy(groups map[string]bool, customArgs *cgargs.CustomArgs) error { + if len(groups) == 0 { + return nil + } + deepCopyCustomArgs := &dpargs.CustomArgs{} args := args.Default().WithoutDefaultFlagParsing() @@ -198,6 +207,10 @@ func generateDeepcopy(groups map[string]bool, customArgs *cgargs.CustomArgs) err } func generateClientset(groups map[string]bool, customArgs *cgargs.CustomArgs) error { + if len(groups) == 0 { + return nil + } + args, clientSetArgs := csargs.NewDefaults() clientSetArgs.ClientsetName = "versioned" args.OutputBase = customArgs.OutputBase @@ -237,10 +250,69 @@ func generateClientset(groups map[string]bool, customArgs *cgargs.CustomArgs) er return args.Execute(cs.NameSystems(nil), cs.DefaultNameSystem(), - cs.Packages) + setGenClient(groups, customArgs.TypesByGroup, cs.Packages)) +} + +func setGenClient(groups map[string]bool, typesByGroup map[schema.GroupVersion][]*types.Name, f func(*generator.Context, *args.GeneratorArgs) generator.Packages) func(*generator.Context, *args.GeneratorArgs) generator.Packages { + return func(context *generator.Context, generatorArgs *args.GeneratorArgs) generator.Packages { + for gv, names := range typesByGroup { + if !groups[gv.Group] { + continue + } + for _, name := range names { + var ( + p = context.Universe.Package(name.Package) + t = p.Type(name.Name) + status bool + nsed bool + kubebuilder bool + ) + + for _, line := range append(t.SecondClosestCommentLines, t.CommentLines...) { + switch { + case strings.Contains(line, "+kubebuilder:object:root=true"): + kubebuilder = true + t.SecondClosestCommentLines = append(t.SecondClosestCommentLines, "+genclient") + case strings.Contains(line, "+kubebuilder:subresource:status"): + status = true + case strings.Contains(line, "+kubebuilder:resource:") && strings.Contains(line, "scope=Namespaced"): + nsed = true + } + } + + if kubebuilder { + if !nsed { + t.SecondClosestCommentLines = append(t.SecondClosestCommentLines, "+genclient:nonNamespaced") + } + if !status { + t.SecondClosestCommentLines = append(t.SecondClosestCommentLines, "+genclient:noStatus") + } + + foundGroup := false + for _, comment := range p.DocComments { + if strings.Contains(comment, "+groupName=") { + foundGroup = true + break + } + } + + if !foundGroup { + p.DocComments = append(p.DocComments, "+groupName="+gv.Group) + p.Comments = append(p.Comments, "+groupName="+gv.Group) + fmt.Println(gv.Group, p.DocComments, p.Comments, p.Path) + } + } + } + } + return f(context, generatorArgs) + } } func generateInformers(groups map[string]bool, customArgs *cgargs.CustomArgs) error { + if len(groups) == 0 { + return nil + } + args, clientSetArgs := infargs.NewDefaults() clientSetArgs.VersionedClientSetPackage = filepath.Join(customArgs.Package, "clientset/versioned") clientSetArgs.ListersPackage = filepath.Join(customArgs.Package, "listers") @@ -257,10 +329,14 @@ func generateInformers(groups map[string]bool, customArgs *cgargs.CustomArgs) er return args.Execute(inf.NameSystems(nil), inf.DefaultNameSystem(), - inf.Packages) + setGenClient(groups, customArgs.TypesByGroup, inf.Packages)) } func generateListers(groups map[string]bool, customArgs *cgargs.CustomArgs) error { + if len(groups) == 0 { + return nil + } + args, _ := lsargs.NewDefaults() args.OutputBase = customArgs.OutputBase args.OutputPackagePath = filepath.Join(customArgs.Package, "listers") @@ -275,7 +351,7 @@ func generateListers(groups map[string]bool, customArgs *cgargs.CustomArgs) erro return args.Execute(ls.NameSystems(nil), ls.DefaultNameSystem(), - ls.Packages) + setGenClient(groups, customArgs.TypesByGroup, ls.Packages)) } func parseTypes(customArgs *cgargs.CustomArgs) []string { @@ -295,7 +371,10 @@ func parseTypes(customArgs *cgargs.CustomArgs) []string { } for groupName, group := range customArgs.Options.Groups { - cgargs.ObjectsToGroupVersion(groupName, group.Types, customArgs.TypesByGroup) + if err := cgargs.ObjectsToGroupVersion(groupName, group.Types, customArgs.TypesByGroup); err != nil { + // sorry, should really handle this better + panic(err) + } } var inputDirs []string diff --git a/vendor/github.com/rancher/wrangler/pkg/crd/init.go b/vendor/github.com/rancher/wrangler/pkg/crd/init.go index a5c9095282a2..9d4f1a1d51f2 100644 --- a/vendor/github.com/rancher/wrangler/pkg/crd/init.go +++ b/vendor/github.com/rancher/wrangler/pkg/crd/init.go @@ -2,6 +2,7 @@ package crd import ( "context" + "path/filepath" "reflect" "strconv" "strings" @@ -172,6 +173,11 @@ func (c CRD) WithCategories(categories ...string) CRD { return c } +func (c CRD) WithGroup(group string) CRD { + c.GVK.Group = group + return c +} + func (c CRD) WithShortNames(shortNames ...string) CRD { c.ShortNames = shortNames return c @@ -183,6 +189,16 @@ func (c CRD) ToCustomResourceDefinition() (apiext.CustomResourceDefinition, erro c.GVK.Kind = t.Name() } + if c.SchemaObject != nil && c.GVK.Version == "" { + t := getType(c.SchemaObject) + c.GVK.Version = filepath.Base(t.PkgPath()) + } + + if c.SchemaObject != nil && c.GVK.Group == "" { + t := getType(c.SchemaObject) + c.GVK.Group = filepath.Base(filepath.Dir(t.PkgPath())) + } + plural := c.PluralName if plural == "" { plural = strings.ToLower(name.GuessPluralName(c.GVK.Kind)) @@ -436,6 +452,7 @@ func (f *Factory) createCRD(ctx context.Context, crdDef CRD, ready map[string]*a if ok { if !equality.Semantic.DeepEqual(crd.Spec.Subresources, existing.Spec.Subresources) || !equality.Semantic.DeepEqual(crd.Spec.Validation, existing.Spec.Validation) || + !equality.Semantic.DeepEqual(crd.Spec.AdditionalPrinterColumns, existing.Spec.AdditionalPrinterColumns) || !equality.Semantic.DeepEqual(crd.Spec.Versions, existing.Spec.Versions) { existing.Spec = crd.Spec logrus.Infof("Updating CRD %s", crd.Name) diff --git a/vendor/github.com/rancher/wrangler/pkg/data/convert/convert.go b/vendor/github.com/rancher/wrangler/pkg/data/convert/convert.go index 47af9bc74a69..44a97028cb5e 100644 --- a/vendor/github.com/rancher/wrangler/pkg/data/convert/convert.go +++ b/vendor/github.com/rancher/wrangler/pkg/data/convert/convert.go @@ -259,3 +259,44 @@ func ToYAMLKey(str string) string { return string(result) } + +func ToArgKey(str string) string { + var ( + result []rune + input = []rune(str) + ) + cap := false + + for i := 0; i < len(input); i++ { + r := input[i] + if i == 0 { + if unicode.IsUpper(r) { + cap = true + } + result = append(result, unicode.ToLower(r)) + continue + } + + if unicode.IsUpper(r) { + if cap { + result = append(result, unicode.ToLower(r)) + } else if len(input) > i+2 && + unicode.IsUpper(input[i]) && + unicode.IsUpper(input[i+1]) && + unicode.IsUpper(input[i+2]) { + result = append(result, '-', + unicode.ToLower(input[i]), + unicode.ToLower(input[i+1]), + unicode.ToLower(input[i+2])) + i += 2 + } else { + result = append(result, '-', unicode.ToLower(r)) + } + } else { + cap = false + result = append(result, r) + } + } + + return "--" + string(result) +} diff --git a/vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/factory.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/factory.go new file mode 100644 index 000000000000..52ed0098f3f0 --- /dev/null +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/factory.go @@ -0,0 +1,59 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by main. DO NOT EDIT. + +package apps + +import ( + "github.com/rancher/wrangler/pkg/generic" + "k8s.io/client-go/rest" +) + +type Factory struct { + *generic.Factory +} + +func NewFactoryFromConfigOrDie(config *rest.Config) *Factory { + f, err := NewFactoryFromConfig(config) + if err != nil { + panic(err) + } + return f +} + +func NewFactoryFromConfig(config *rest.Config) (*Factory, error) { + return NewFactoryFromConfigWithOptions(config, nil) +} + +func NewFactoryFromConfigWithNamespace(config *rest.Config, namespace string) (*Factory, error) { + return NewFactoryFromConfigWithOptions(config, &FactoryOptions{ + Namespace: namespace, + }) +} + +type FactoryOptions = generic.FactoryOptions + +func NewFactoryFromConfigWithOptions(config *rest.Config, opts *FactoryOptions) (*Factory, error) { + f, err := generic.NewFactoryFromConfigWithOptions(config, opts) + return &Factory{ + Factory: f, + }, err +} + +func (c *Factory) Apps() Interface { + return New(c.ControllerFactory()) +} diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/interface.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/interface.go similarity index 56% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/interface.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/interface.go index 40179e4c76c3..4f91f157d9d9 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/interface.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/interface.go @@ -19,10 +19,8 @@ limitations under the License. package apps import ( - v1 "github.com/rancher/wrangler-api/pkg/generated/controllers/apps/v1" - "github.com/rancher/wrangler/pkg/generic" - informers "k8s.io/client-go/informers/apps" - clientset "k8s.io/client-go/kubernetes" + "github.com/rancher/lasso/pkg/controller" + v1 "github.com/rancher/wrangler/pkg/generated/controllers/apps/v1" ) type Interface interface { @@ -30,21 +28,16 @@ type Interface interface { } type group struct { - controllerManager *generic.ControllerManager - informers informers.Interface - client clientset.Interface + controllerFactory controller.SharedControllerFactory } // New returns a new Interface. -func New(controllerManager *generic.ControllerManager, informers informers.Interface, - client clientset.Interface) Interface { +func New(controllerFactory controller.SharedControllerFactory) Interface { return &group{ - controllerManager: controllerManager, - informers: informers, - client: client, + controllerFactory: controllerFactory, } } func (g *group) V1() v1.Interface { - return v1.New(g.controllerManager, g.client.AppsV1(), g.informers.V1()) + return v1.New(g.controllerFactory) } diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/v1/daemonset.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/v1/daemonset.go similarity index 78% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/v1/daemonset.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/v1/daemonset.go index c7c5378a6e53..3f8a2b764865 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/v1/daemonset.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/v1/daemonset.go @@ -22,6 +22,8 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/apply" "github.com/rancher/wrangler/pkg/condition" "github.com/rancher/wrangler/pkg/generic" @@ -36,9 +38,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/apps/v1" - clientset "k8s.io/client-go/kubernetes/typed/apps/v1" - listers "k8s.io/client-go/listers/apps/v1" "k8s.io/client-go/tools/cache" ) @@ -78,18 +77,22 @@ type DaemonSetCache interface { type DaemonSetIndexer func(obj *v1.DaemonSet) ([]string, error) type daemonSetController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.DaemonSetsGetter - informer informers.DaemonSetInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewDaemonSetController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.DaemonSetsGetter, informer informers.DaemonSetInformer) DaemonSetController { +func NewDaemonSetController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) DaemonSetController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &daemonSetController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -136,12 +139,11 @@ func UpdateDaemonSetDeepCopyOnChange(client DaemonSetClient, obj *v1.DaemonSet, } func (c *daemonSetController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *daemonSetController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *daemonSetController) OnChange(ctx context.Context, name string, sync DaemonSetHandler) { @@ -149,20 +151,19 @@ func (c *daemonSetController) OnChange(ctx context.Context, name string, sync Da } func (c *daemonSetController) OnRemove(ctx context.Context, name string, sync DaemonSetHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromDaemonSetHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromDaemonSetHandlerToHandler(sync))) } func (c *daemonSetController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *daemonSetController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *daemonSetController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *daemonSetController) GroupVersionKind() schema.GroupVersionKind { @@ -171,57 +172,75 @@ func (c *daemonSetController) GroupVersionKind() schema.GroupVersionKind { func (c *daemonSetController) Cache() DaemonSetCache { return &daemonSetCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *daemonSetController) Create(obj *v1.DaemonSet) (*v1.DaemonSet, error) { - return c.clientGetter.DaemonSets(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.DaemonSet{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *daemonSetController) Update(obj *v1.DaemonSet) (*v1.DaemonSet, error) { - return c.clientGetter.DaemonSets(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.DaemonSet{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *daemonSetController) UpdateStatus(obj *v1.DaemonSet) (*v1.DaemonSet, error) { - return c.clientGetter.DaemonSets(obj.Namespace).UpdateStatus(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.DaemonSet{} + return result, c.client.UpdateStatus(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *daemonSetController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.DaemonSets(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *daemonSetController) Get(namespace, name string, options metav1.GetOptions) (*v1.DaemonSet, error) { - return c.clientGetter.DaemonSets(namespace).Get(context.TODO(), name, options) + result := &v1.DaemonSet{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *daemonSetController) List(namespace string, opts metav1.ListOptions) (*v1.DaemonSetList, error) { - return c.clientGetter.DaemonSets(namespace).List(context.TODO(), opts) + result := &v1.DaemonSetList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *daemonSetController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.DaemonSets(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *daemonSetController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.DaemonSet, err error) { - return c.clientGetter.DaemonSets(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *daemonSetController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.DaemonSet, error) { + result := &v1.DaemonSet{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type daemonSetCache struct { - lister listers.DaemonSetLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *daemonSetCache) Get(namespace, name string) (*v1.DaemonSet, error) { - return c.lister.DaemonSets(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.DaemonSet), nil } -func (c *daemonSetCache) List(namespace string, selector labels.Selector) ([]*v1.DaemonSet, error) { - return c.lister.DaemonSets(namespace).List(selector) +func (c *daemonSetCache) List(namespace string, selector labels.Selector) (ret []*v1.DaemonSet, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.DaemonSet)) + }) + + return ret, err } func (c *daemonSetCache) AddIndexer(indexName string, indexer DaemonSetIndexer) { diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/v1/deployment.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/v1/deployment.go similarity index 78% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/v1/deployment.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/v1/deployment.go index 4f405391eb83..3c96c6878500 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/v1/deployment.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/v1/deployment.go @@ -22,6 +22,8 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/apply" "github.com/rancher/wrangler/pkg/condition" "github.com/rancher/wrangler/pkg/generic" @@ -36,9 +38,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/apps/v1" - clientset "k8s.io/client-go/kubernetes/typed/apps/v1" - listers "k8s.io/client-go/listers/apps/v1" "k8s.io/client-go/tools/cache" ) @@ -78,18 +77,22 @@ type DeploymentCache interface { type DeploymentIndexer func(obj *v1.Deployment) ([]string, error) type deploymentController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.DeploymentsGetter - informer informers.DeploymentInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewDeploymentController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.DeploymentsGetter, informer informers.DeploymentInformer) DeploymentController { +func NewDeploymentController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) DeploymentController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &deploymentController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -136,12 +139,11 @@ func UpdateDeploymentDeepCopyOnChange(client DeploymentClient, obj *v1.Deploymen } func (c *deploymentController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *deploymentController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *deploymentController) OnChange(ctx context.Context, name string, sync DeploymentHandler) { @@ -149,20 +151,19 @@ func (c *deploymentController) OnChange(ctx context.Context, name string, sync D } func (c *deploymentController) OnRemove(ctx context.Context, name string, sync DeploymentHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromDeploymentHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromDeploymentHandlerToHandler(sync))) } func (c *deploymentController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *deploymentController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *deploymentController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *deploymentController) GroupVersionKind() schema.GroupVersionKind { @@ -171,57 +172,75 @@ func (c *deploymentController) GroupVersionKind() schema.GroupVersionKind { func (c *deploymentController) Cache() DeploymentCache { return &deploymentCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *deploymentController) Create(obj *v1.Deployment) (*v1.Deployment, error) { - return c.clientGetter.Deployments(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.Deployment{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *deploymentController) Update(obj *v1.Deployment) (*v1.Deployment, error) { - return c.clientGetter.Deployments(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Deployment{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *deploymentController) UpdateStatus(obj *v1.Deployment) (*v1.Deployment, error) { - return c.clientGetter.Deployments(obj.Namespace).UpdateStatus(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Deployment{} + return result, c.client.UpdateStatus(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *deploymentController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.Deployments(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *deploymentController) Get(namespace, name string, options metav1.GetOptions) (*v1.Deployment, error) { - return c.clientGetter.Deployments(namespace).Get(context.TODO(), name, options) + result := &v1.Deployment{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *deploymentController) List(namespace string, opts metav1.ListOptions) (*v1.DeploymentList, error) { - return c.clientGetter.Deployments(namespace).List(context.TODO(), opts) + result := &v1.DeploymentList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *deploymentController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.Deployments(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *deploymentController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Deployment, err error) { - return c.clientGetter.Deployments(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *deploymentController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.Deployment, error) { + result := &v1.Deployment{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type deploymentCache struct { - lister listers.DeploymentLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *deploymentCache) Get(namespace, name string) (*v1.Deployment, error) { - return c.lister.Deployments(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.Deployment), nil } -func (c *deploymentCache) List(namespace string, selector labels.Selector) ([]*v1.Deployment, error) { - return c.lister.Deployments(namespace).List(selector) +func (c *deploymentCache) List(namespace string, selector labels.Selector) (ret []*v1.Deployment, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Deployment)) + }) + + return ret, err } func (c *deploymentCache) AddIndexer(indexName string, indexer DeploymentIndexer) { diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/v1/interface.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/v1/interface.go similarity index 52% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/v1/interface.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/v1/interface.go index 1436dddd23ec..c08a4c7efc46 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/v1/interface.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/v1/interface.go @@ -19,39 +19,38 @@ limitations under the License. package v1 import ( - "github.com/rancher/wrangler/pkg/generic" + "github.com/rancher/lasso/pkg/controller" + "github.com/rancher/wrangler/pkg/schemes" v1 "k8s.io/api/apps/v1" - informers "k8s.io/client-go/informers/apps/v1" - clientset "k8s.io/client-go/kubernetes/typed/apps/v1" + "k8s.io/apimachinery/pkg/runtime/schema" ) +func init() { + schemes.Register(v1.AddToScheme) +} + type Interface interface { DaemonSet() DaemonSetController Deployment() DeploymentController StatefulSet() StatefulSetController } -func New(controllerManager *generic.ControllerManager, client clientset.AppsV1Interface, - informers informers.Interface) Interface { +func New(controllerFactory controller.SharedControllerFactory) Interface { return &version{ - controllerManager: controllerManager, - client: client, - informers: informers, + controllerFactory: controllerFactory, } } type version struct { - controllerManager *generic.ControllerManager - informers informers.Interface - client clientset.AppsV1Interface + controllerFactory controller.SharedControllerFactory } func (c *version) DaemonSet() DaemonSetController { - return NewDaemonSetController(v1.SchemeGroupVersion.WithKind("DaemonSet"), c.controllerManager, c.client, c.informers.DaemonSets()) + return NewDaemonSetController(schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "DaemonSet"}, "daemonsets", true, c.controllerFactory) } func (c *version) Deployment() DeploymentController { - return NewDeploymentController(v1.SchemeGroupVersion.WithKind("Deployment"), c.controllerManager, c.client, c.informers.Deployments()) + return NewDeploymentController(schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "Deployment"}, "deployments", true, c.controllerFactory) } func (c *version) StatefulSet() StatefulSetController { - return NewStatefulSetController(v1.SchemeGroupVersion.WithKind("StatefulSet"), c.controllerManager, c.client, c.informers.StatefulSets()) + return NewStatefulSetController(schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "StatefulSet"}, "statefulsets", true, c.controllerFactory) } diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/v1/statefulset.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/v1/statefulset.go similarity index 78% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/v1/statefulset.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/v1/statefulset.go index 5b1b40363591..05f6519bd9d0 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/apps/v1/statefulset.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/apps/v1/statefulset.go @@ -22,6 +22,8 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/apply" "github.com/rancher/wrangler/pkg/condition" "github.com/rancher/wrangler/pkg/generic" @@ -36,9 +38,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/apps/v1" - clientset "k8s.io/client-go/kubernetes/typed/apps/v1" - listers "k8s.io/client-go/listers/apps/v1" "k8s.io/client-go/tools/cache" ) @@ -78,18 +77,22 @@ type StatefulSetCache interface { type StatefulSetIndexer func(obj *v1.StatefulSet) ([]string, error) type statefulSetController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.StatefulSetsGetter - informer informers.StatefulSetInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewStatefulSetController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.StatefulSetsGetter, informer informers.StatefulSetInformer) StatefulSetController { +func NewStatefulSetController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) StatefulSetController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &statefulSetController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -136,12 +139,11 @@ func UpdateStatefulSetDeepCopyOnChange(client StatefulSetClient, obj *v1.Statefu } func (c *statefulSetController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *statefulSetController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *statefulSetController) OnChange(ctx context.Context, name string, sync StatefulSetHandler) { @@ -149,20 +151,19 @@ func (c *statefulSetController) OnChange(ctx context.Context, name string, sync } func (c *statefulSetController) OnRemove(ctx context.Context, name string, sync StatefulSetHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromStatefulSetHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromStatefulSetHandlerToHandler(sync))) } func (c *statefulSetController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *statefulSetController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *statefulSetController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *statefulSetController) GroupVersionKind() schema.GroupVersionKind { @@ -171,57 +172,75 @@ func (c *statefulSetController) GroupVersionKind() schema.GroupVersionKind { func (c *statefulSetController) Cache() StatefulSetCache { return &statefulSetCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *statefulSetController) Create(obj *v1.StatefulSet) (*v1.StatefulSet, error) { - return c.clientGetter.StatefulSets(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.StatefulSet{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *statefulSetController) Update(obj *v1.StatefulSet) (*v1.StatefulSet, error) { - return c.clientGetter.StatefulSets(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.StatefulSet{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *statefulSetController) UpdateStatus(obj *v1.StatefulSet) (*v1.StatefulSet, error) { - return c.clientGetter.StatefulSets(obj.Namespace).UpdateStatus(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.StatefulSet{} + return result, c.client.UpdateStatus(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *statefulSetController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.StatefulSets(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *statefulSetController) Get(namespace, name string, options metav1.GetOptions) (*v1.StatefulSet, error) { - return c.clientGetter.StatefulSets(namespace).Get(context.TODO(), name, options) + result := &v1.StatefulSet{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *statefulSetController) List(namespace string, opts metav1.ListOptions) (*v1.StatefulSetList, error) { - return c.clientGetter.StatefulSets(namespace).List(context.TODO(), opts) + result := &v1.StatefulSetList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *statefulSetController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.StatefulSets(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *statefulSetController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.StatefulSet, err error) { - return c.clientGetter.StatefulSets(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *statefulSetController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.StatefulSet, error) { + result := &v1.StatefulSet{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type statefulSetCache struct { - lister listers.StatefulSetLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *statefulSetCache) Get(namespace, name string) (*v1.StatefulSet, error) { - return c.lister.StatefulSets(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.StatefulSet), nil } -func (c *statefulSetCache) List(namespace string, selector labels.Selector) ([]*v1.StatefulSet, error) { - return c.lister.StatefulSets(namespace).List(selector) +func (c *statefulSetCache) List(namespace string, selector labels.Selector) (ret []*v1.StatefulSet, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.StatefulSet)) + }) + + return ret, err } func (c *statefulSetCache) AddIndexer(indexName string, indexer StatefulSetIndexer) { diff --git a/vendor/github.com/rancher/wrangler/pkg/generated/controllers/batch/factory.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/batch/factory.go new file mode 100644 index 000000000000..2f37a7d8726f --- /dev/null +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/batch/factory.go @@ -0,0 +1,59 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by main. DO NOT EDIT. + +package batch + +import ( + "github.com/rancher/wrangler/pkg/generic" + "k8s.io/client-go/rest" +) + +type Factory struct { + *generic.Factory +} + +func NewFactoryFromConfigOrDie(config *rest.Config) *Factory { + f, err := NewFactoryFromConfig(config) + if err != nil { + panic(err) + } + return f +} + +func NewFactoryFromConfig(config *rest.Config) (*Factory, error) { + return NewFactoryFromConfigWithOptions(config, nil) +} + +func NewFactoryFromConfigWithNamespace(config *rest.Config, namespace string) (*Factory, error) { + return NewFactoryFromConfigWithOptions(config, &FactoryOptions{ + Namespace: namespace, + }) +} + +type FactoryOptions = generic.FactoryOptions + +func NewFactoryFromConfigWithOptions(config *rest.Config, opts *FactoryOptions) (*Factory, error) { + f, err := generic.NewFactoryFromConfigWithOptions(config, opts) + return &Factory{ + Factory: f, + }, err +} + +func (c *Factory) Batch() Interface { + return New(c.ControllerFactory()) +} diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/batch/interface.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/batch/interface.go similarity index 55% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/batch/interface.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/batch/interface.go index 77da90250dd1..a078bf8e5e11 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/batch/interface.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/batch/interface.go @@ -19,10 +19,8 @@ limitations under the License. package batch import ( - v1 "github.com/rancher/wrangler-api/pkg/generated/controllers/batch/v1" - "github.com/rancher/wrangler/pkg/generic" - informers "k8s.io/client-go/informers/batch" - clientset "k8s.io/client-go/kubernetes" + "github.com/rancher/lasso/pkg/controller" + v1 "github.com/rancher/wrangler/pkg/generated/controllers/batch/v1" ) type Interface interface { @@ -30,21 +28,16 @@ type Interface interface { } type group struct { - controllerManager *generic.ControllerManager - informers informers.Interface - client clientset.Interface + controllerFactory controller.SharedControllerFactory } // New returns a new Interface. -func New(controllerManager *generic.ControllerManager, informers informers.Interface, - client clientset.Interface) Interface { +func New(controllerFactory controller.SharedControllerFactory) Interface { return &group{ - controllerManager: controllerManager, - informers: informers, - client: client, + controllerFactory: controllerFactory, } } func (g *group) V1() v1.Interface { - return v1.New(g.controllerManager, g.client.BatchV1(), g.informers.V1()) + return v1.New(g.controllerFactory) } diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/batch/v1/interface.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/batch/v1/interface.go similarity index 55% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/batch/v1/interface.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/batch/v1/interface.go index 27edcfb5dee3..abaf5ad5c82b 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/batch/v1/interface.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/batch/v1/interface.go @@ -19,31 +19,30 @@ limitations under the License. package v1 import ( - "github.com/rancher/wrangler/pkg/generic" + "github.com/rancher/lasso/pkg/controller" + "github.com/rancher/wrangler/pkg/schemes" v1 "k8s.io/api/batch/v1" - informers "k8s.io/client-go/informers/batch/v1" - clientset "k8s.io/client-go/kubernetes/typed/batch/v1" + "k8s.io/apimachinery/pkg/runtime/schema" ) +func init() { + schemes.Register(v1.AddToScheme) +} + type Interface interface { Job() JobController } -func New(controllerManager *generic.ControllerManager, client clientset.BatchV1Interface, - informers informers.Interface) Interface { +func New(controllerFactory controller.SharedControllerFactory) Interface { return &version{ - controllerManager: controllerManager, - client: client, - informers: informers, + controllerFactory: controllerFactory, } } type version struct { - controllerManager *generic.ControllerManager - informers informers.Interface - client clientset.BatchV1Interface + controllerFactory controller.SharedControllerFactory } func (c *version) Job() JobController { - return NewJobController(v1.SchemeGroupVersion.WithKind("Job"), c.controllerManager, c.client, c.informers.Jobs()) + return NewJobController(schema.GroupVersionKind{Group: "batch", Version: "v1", Kind: "Job"}, "jobs", true, c.controllerFactory) } diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/batch/v1/job.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/batch/v1/job.go similarity index 77% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/batch/v1/job.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/batch/v1/job.go index 09b1e3ac7586..d700a860efe4 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/batch/v1/job.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/batch/v1/job.go @@ -22,6 +22,8 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/apply" "github.com/rancher/wrangler/pkg/condition" "github.com/rancher/wrangler/pkg/generic" @@ -36,9 +38,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/batch/v1" - clientset "k8s.io/client-go/kubernetes/typed/batch/v1" - listers "k8s.io/client-go/listers/batch/v1" "k8s.io/client-go/tools/cache" ) @@ -78,18 +77,22 @@ type JobCache interface { type JobIndexer func(obj *v1.Job) ([]string, error) type jobController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.JobsGetter - informer informers.JobInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewJobController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.JobsGetter, informer informers.JobInformer) JobController { +func NewJobController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) JobController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &jobController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -136,12 +139,11 @@ func UpdateJobDeepCopyOnChange(client JobClient, obj *v1.Job, handler func(obj * } func (c *jobController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *jobController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *jobController) OnChange(ctx context.Context, name string, sync JobHandler) { @@ -149,20 +151,19 @@ func (c *jobController) OnChange(ctx context.Context, name string, sync JobHandl } func (c *jobController) OnRemove(ctx context.Context, name string, sync JobHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromJobHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromJobHandlerToHandler(sync))) } func (c *jobController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *jobController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *jobController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *jobController) GroupVersionKind() schema.GroupVersionKind { @@ -171,57 +172,75 @@ func (c *jobController) GroupVersionKind() schema.GroupVersionKind { func (c *jobController) Cache() JobCache { return &jobCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *jobController) Create(obj *v1.Job) (*v1.Job, error) { - return c.clientGetter.Jobs(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.Job{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *jobController) Update(obj *v1.Job) (*v1.Job, error) { - return c.clientGetter.Jobs(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Job{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *jobController) UpdateStatus(obj *v1.Job) (*v1.Job, error) { - return c.clientGetter.Jobs(obj.Namespace).UpdateStatus(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Job{} + return result, c.client.UpdateStatus(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *jobController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.Jobs(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *jobController) Get(namespace, name string, options metav1.GetOptions) (*v1.Job, error) { - return c.clientGetter.Jobs(namespace).Get(context.TODO(), name, options) + result := &v1.Job{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *jobController) List(namespace string, opts metav1.ListOptions) (*v1.JobList, error) { - return c.clientGetter.Jobs(namespace).List(context.TODO(), opts) + result := &v1.JobList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *jobController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.Jobs(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *jobController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Job, err error) { - return c.clientGetter.Jobs(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *jobController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.Job, error) { + result := &v1.Job{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type jobCache struct { - lister listers.JobLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *jobCache) Get(namespace, name string) (*v1.Job, error) { - return c.lister.Jobs(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.Job), nil } -func (c *jobCache) List(namespace string, selector labels.Selector) ([]*v1.Job, error) { - return c.lister.Jobs(namespace).List(selector) +func (c *jobCache) List(namespace string, selector labels.Selector) (ret []*v1.Job, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Job)) + }) + + return ret, err } func (c *jobCache) AddIndexer(indexName string, indexer JobIndexer) { diff --git a/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/factory.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/factory.go new file mode 100644 index 000000000000..b822f20a6f55 --- /dev/null +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/factory.go @@ -0,0 +1,59 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by main. DO NOT EDIT. + +package core + +import ( + "github.com/rancher/wrangler/pkg/generic" + "k8s.io/client-go/rest" +) + +type Factory struct { + *generic.Factory +} + +func NewFactoryFromConfigOrDie(config *rest.Config) *Factory { + f, err := NewFactoryFromConfig(config) + if err != nil { + panic(err) + } + return f +} + +func NewFactoryFromConfig(config *rest.Config) (*Factory, error) { + return NewFactoryFromConfigWithOptions(config, nil) +} + +func NewFactoryFromConfigWithNamespace(config *rest.Config, namespace string) (*Factory, error) { + return NewFactoryFromConfigWithOptions(config, &FactoryOptions{ + Namespace: namespace, + }) +} + +type FactoryOptions = generic.FactoryOptions + +func NewFactoryFromConfigWithOptions(config *rest.Config, opts *FactoryOptions) (*Factory, error) { + f, err := generic.NewFactoryFromConfigWithOptions(config, opts) + return &Factory{ + Factory: f, + }, err +} + +func (c *Factory) Core() Interface { + return New(c.ControllerFactory()) +} diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/interface.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/interface.go similarity index 56% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/interface.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/interface.go index 51d1216ed9bb..689915f18472 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/interface.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/interface.go @@ -19,10 +19,8 @@ limitations under the License. package core import ( - v1 "github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1" - "github.com/rancher/wrangler/pkg/generic" - informers "k8s.io/client-go/informers/core" - clientset "k8s.io/client-go/kubernetes" + "github.com/rancher/lasso/pkg/controller" + v1 "github.com/rancher/wrangler/pkg/generated/controllers/core/v1" ) type Interface interface { @@ -30,21 +28,16 @@ type Interface interface { } type group struct { - controllerManager *generic.ControllerManager - informers informers.Interface - client clientset.Interface + controllerFactory controller.SharedControllerFactory } // New returns a new Interface. -func New(controllerManager *generic.ControllerManager, informers informers.Interface, - client clientset.Interface) Interface { +func New(controllerFactory controller.SharedControllerFactory) Interface { return &group{ - controllerManager: controllerManager, - informers: informers, - client: client, + controllerFactory: controllerFactory, } } func (g *group) V1() v1.Interface { - return v1.New(g.controllerManager, g.client.CoreV1(), g.informers.V1()) + return v1.New(g.controllerFactory) } diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/configmap.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/configmap.go similarity index 70% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/configmap.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/configmap.go index 334ad0a8611a..d56e1d87b46e 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/configmap.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/configmap.go @@ -22,9 +22,12 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/generic" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" + "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" @@ -32,9 +35,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/core/v1" - clientset "k8s.io/client-go/kubernetes/typed/core/v1" - listers "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" ) @@ -74,18 +74,22 @@ type ConfigMapCache interface { type ConfigMapIndexer func(obj *v1.ConfigMap) ([]string, error) type configMapController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.ConfigMapsGetter - informer informers.ConfigMapInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewConfigMapController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.ConfigMapsGetter, informer informers.ConfigMapInformer) ConfigMapController { +func NewConfigMapController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) ConfigMapController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &configMapController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -132,12 +136,11 @@ func UpdateConfigMapDeepCopyOnChange(client ConfigMapClient, obj *v1.ConfigMap, } func (c *configMapController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *configMapController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *configMapController) OnChange(ctx context.Context, name string, sync ConfigMapHandler) { @@ -145,20 +148,19 @@ func (c *configMapController) OnChange(ctx context.Context, name string, sync Co } func (c *configMapController) OnRemove(ctx context.Context, name string, sync ConfigMapHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromConfigMapHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromConfigMapHandlerToHandler(sync))) } func (c *configMapController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *configMapController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *configMapController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *configMapController) GroupVersionKind() schema.GroupVersionKind { @@ -167,53 +169,70 @@ func (c *configMapController) GroupVersionKind() schema.GroupVersionKind { func (c *configMapController) Cache() ConfigMapCache { return &configMapCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *configMapController) Create(obj *v1.ConfigMap) (*v1.ConfigMap, error) { - return c.clientGetter.ConfigMaps(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.ConfigMap{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *configMapController) Update(obj *v1.ConfigMap) (*v1.ConfigMap, error) { - return c.clientGetter.ConfigMaps(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.ConfigMap{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *configMapController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.ConfigMaps(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *configMapController) Get(namespace, name string, options metav1.GetOptions) (*v1.ConfigMap, error) { - return c.clientGetter.ConfigMaps(namespace).Get(context.TODO(), name, options) + result := &v1.ConfigMap{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *configMapController) List(namespace string, opts metav1.ListOptions) (*v1.ConfigMapList, error) { - return c.clientGetter.ConfigMaps(namespace).List(context.TODO(), opts) + result := &v1.ConfigMapList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *configMapController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.ConfigMaps(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *configMapController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ConfigMap, err error) { - return c.clientGetter.ConfigMaps(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *configMapController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.ConfigMap, error) { + result := &v1.ConfigMap{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type configMapCache struct { - lister listers.ConfigMapLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *configMapCache) Get(namespace, name string) (*v1.ConfigMap, error) { - return c.lister.ConfigMaps(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.ConfigMap), nil } -func (c *configMapCache) List(namespace string, selector labels.Selector) ([]*v1.ConfigMap, error) { - return c.lister.ConfigMaps(namespace).List(selector) +func (c *configMapCache) List(namespace string, selector labels.Selector) (ret []*v1.ConfigMap, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.ConfigMap)) + }) + + return ret, err } func (c *configMapCache) AddIndexer(indexName string, indexer ConfigMapIndexer) { diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/endpoints.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/endpoints.go similarity index 70% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/endpoints.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/endpoints.go index bbd7cf4b248f..742c38be0070 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/endpoints.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/endpoints.go @@ -22,9 +22,12 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/generic" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" + "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" @@ -32,9 +35,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/core/v1" - clientset "k8s.io/client-go/kubernetes/typed/core/v1" - listers "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" ) @@ -74,18 +74,22 @@ type EndpointsCache interface { type EndpointsIndexer func(obj *v1.Endpoints) ([]string, error) type endpointsController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.EndpointsGetter - informer informers.EndpointsInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewEndpointsController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.EndpointsGetter, informer informers.EndpointsInformer) EndpointsController { +func NewEndpointsController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) EndpointsController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &endpointsController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -132,12 +136,11 @@ func UpdateEndpointsDeepCopyOnChange(client EndpointsClient, obj *v1.Endpoints, } func (c *endpointsController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *endpointsController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *endpointsController) OnChange(ctx context.Context, name string, sync EndpointsHandler) { @@ -145,20 +148,19 @@ func (c *endpointsController) OnChange(ctx context.Context, name string, sync En } func (c *endpointsController) OnRemove(ctx context.Context, name string, sync EndpointsHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromEndpointsHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromEndpointsHandlerToHandler(sync))) } func (c *endpointsController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *endpointsController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *endpointsController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *endpointsController) GroupVersionKind() schema.GroupVersionKind { @@ -167,53 +169,70 @@ func (c *endpointsController) GroupVersionKind() schema.GroupVersionKind { func (c *endpointsController) Cache() EndpointsCache { return &endpointsCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *endpointsController) Create(obj *v1.Endpoints) (*v1.Endpoints, error) { - return c.clientGetter.Endpoints(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.Endpoints{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *endpointsController) Update(obj *v1.Endpoints) (*v1.Endpoints, error) { - return c.clientGetter.Endpoints(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Endpoints{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *endpointsController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.Endpoints(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *endpointsController) Get(namespace, name string, options metav1.GetOptions) (*v1.Endpoints, error) { - return c.clientGetter.Endpoints(namespace).Get(context.TODO(), name, options) + result := &v1.Endpoints{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *endpointsController) List(namespace string, opts metav1.ListOptions) (*v1.EndpointsList, error) { - return c.clientGetter.Endpoints(namespace).List(context.TODO(), opts) + result := &v1.EndpointsList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *endpointsController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.Endpoints(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *endpointsController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Endpoints, err error) { - return c.clientGetter.Endpoints(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *endpointsController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.Endpoints, error) { + result := &v1.Endpoints{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type endpointsCache struct { - lister listers.EndpointsLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *endpointsCache) Get(namespace, name string) (*v1.Endpoints, error) { - return c.lister.Endpoints(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.Endpoints), nil } -func (c *endpointsCache) List(namespace string, selector labels.Selector) ([]*v1.Endpoints, error) { - return c.lister.Endpoints(namespace).List(selector) +func (c *endpointsCache) List(namespace string, selector labels.Selector) (ret []*v1.Endpoints, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Endpoints)) + }) + + return ret, err } func (c *endpointsCache) AddIndexer(indexName string, indexer EndpointsIndexer) { diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/event.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/event.go similarity index 70% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/event.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/event.go index 7f1387661b4c..b052ef91ac99 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/event.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/event.go @@ -22,9 +22,12 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/generic" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" + "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" @@ -32,9 +35,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/core/v1" - clientset "k8s.io/client-go/kubernetes/typed/core/v1" - listers "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" ) @@ -74,18 +74,22 @@ type EventCache interface { type EventIndexer func(obj *v1.Event) ([]string, error) type eventController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.EventsGetter - informer informers.EventInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewEventController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.EventsGetter, informer informers.EventInformer) EventController { +func NewEventController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) EventController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &eventController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -132,12 +136,11 @@ func UpdateEventDeepCopyOnChange(client EventClient, obj *v1.Event, handler func } func (c *eventController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *eventController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *eventController) OnChange(ctx context.Context, name string, sync EventHandler) { @@ -145,20 +148,19 @@ func (c *eventController) OnChange(ctx context.Context, name string, sync EventH } func (c *eventController) OnRemove(ctx context.Context, name string, sync EventHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromEventHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromEventHandlerToHandler(sync))) } func (c *eventController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *eventController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *eventController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *eventController) GroupVersionKind() schema.GroupVersionKind { @@ -167,53 +169,70 @@ func (c *eventController) GroupVersionKind() schema.GroupVersionKind { func (c *eventController) Cache() EventCache { return &eventCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *eventController) Create(obj *v1.Event) (*v1.Event, error) { - return c.clientGetter.Events(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.Event{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *eventController) Update(obj *v1.Event) (*v1.Event, error) { - return c.clientGetter.Events(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Event{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *eventController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.Events(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *eventController) Get(namespace, name string, options metav1.GetOptions) (*v1.Event, error) { - return c.clientGetter.Events(namespace).Get(context.TODO(), name, options) + result := &v1.Event{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *eventController) List(namespace string, opts metav1.ListOptions) (*v1.EventList, error) { - return c.clientGetter.Events(namespace).List(context.TODO(), opts) + result := &v1.EventList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *eventController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.Events(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *eventController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Event, err error) { - return c.clientGetter.Events(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *eventController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.Event, error) { + result := &v1.Event{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type eventCache struct { - lister listers.EventLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *eventCache) Get(namespace, name string) (*v1.Event, error) { - return c.lister.Events(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.Event), nil } -func (c *eventCache) List(namespace string, selector labels.Selector) ([]*v1.Event, error) { - return c.lister.Events(namespace).List(selector) +func (c *eventCache) List(namespace string, selector labels.Selector) (ret []*v1.Event, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Event)) + }) + + return ret, err } func (c *eventCache) AddIndexer(indexName string, indexer EventIndexer) { diff --git a/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/interface.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/interface.go new file mode 100644 index 000000000000..8439e3397734 --- /dev/null +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/interface.go @@ -0,0 +1,84 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by main. DO NOT EDIT. + +package v1 + +import ( + "github.com/rancher/lasso/pkg/controller" + "github.com/rancher/wrangler/pkg/schemes" + v1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func init() { + schemes.Register(v1.AddToScheme) +} + +type Interface interface { + ConfigMap() ConfigMapController + Endpoints() EndpointsController + Event() EventController + Namespace() NamespaceController + Node() NodeController + PersistentVolumeClaim() PersistentVolumeClaimController + Pod() PodController + Secret() SecretController + Service() ServiceController + ServiceAccount() ServiceAccountController +} + +func New(controllerFactory controller.SharedControllerFactory) Interface { + return &version{ + controllerFactory: controllerFactory, + } +} + +type version struct { + controllerFactory controller.SharedControllerFactory +} + +func (c *version) ConfigMap() ConfigMapController { + return NewConfigMapController(schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ConfigMap"}, "configmaps", true, c.controllerFactory) +} +func (c *version) Endpoints() EndpointsController { + return NewEndpointsController(schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Endpoints"}, "endpoints", true, c.controllerFactory) +} +func (c *version) Event() EventController { + return NewEventController(schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Event"}, "events", true, c.controllerFactory) +} +func (c *version) Namespace() NamespaceController { + return NewNamespaceController(schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Namespace"}, "namespaces", false, c.controllerFactory) +} +func (c *version) Node() NodeController { + return NewNodeController(schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Node"}, "nodes", false, c.controllerFactory) +} +func (c *version) PersistentVolumeClaim() PersistentVolumeClaimController { + return NewPersistentVolumeClaimController(schema.GroupVersionKind{Group: "", Version: "v1", Kind: "PersistentVolumeClaim"}, "persistentvolumeclaims", true, c.controllerFactory) +} +func (c *version) Pod() PodController { + return NewPodController(schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Pod"}, "pods", true, c.controllerFactory) +} +func (c *version) Secret() SecretController { + return NewSecretController(schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Secret"}, "secrets", true, c.controllerFactory) +} +func (c *version) Service() ServiceController { + return NewServiceController(schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Service"}, "services", true, c.controllerFactory) +} +func (c *version) ServiceAccount() ServiceAccountController { + return NewServiceAccountController(schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ServiceAccount"}, "serviceaccounts", true, c.controllerFactory) +} diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/namespace.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/namespace.go similarity index 78% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/namespace.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/namespace.go index 14f4a090dd8a..8d4da60dbbed 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/namespace.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/namespace.go @@ -22,6 +22,8 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/apply" "github.com/rancher/wrangler/pkg/condition" "github.com/rancher/wrangler/pkg/generic" @@ -36,9 +38,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/core/v1" - clientset "k8s.io/client-go/kubernetes/typed/core/v1" - listers "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" ) @@ -78,18 +77,22 @@ type NamespaceCache interface { type NamespaceIndexer func(obj *v1.Namespace) ([]string, error) type namespaceController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.NamespacesGetter - informer informers.NamespaceInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewNamespaceController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.NamespacesGetter, informer informers.NamespaceInformer) NamespaceController { +func NewNamespaceController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) NamespaceController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &namespaceController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -136,12 +139,11 @@ func UpdateNamespaceDeepCopyOnChange(client NamespaceClient, obj *v1.Namespace, } func (c *namespaceController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *namespaceController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *namespaceController) OnChange(ctx context.Context, name string, sync NamespaceHandler) { @@ -149,20 +151,19 @@ func (c *namespaceController) OnChange(ctx context.Context, name string, sync Na } func (c *namespaceController) OnRemove(ctx context.Context, name string, sync NamespaceHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromNamespaceHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromNamespaceHandlerToHandler(sync))) } func (c *namespaceController) Enqueue(name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), "", name) + c.controller.Enqueue("", name) } func (c *namespaceController) EnqueueAfter(name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), "", name, duration) + c.controller.EnqueueAfter("", name, duration) } func (c *namespaceController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *namespaceController) GroupVersionKind() schema.GroupVersionKind { @@ -171,57 +172,75 @@ func (c *namespaceController) GroupVersionKind() schema.GroupVersionKind { func (c *namespaceController) Cache() NamespaceCache { return &namespaceCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *namespaceController) Create(obj *v1.Namespace) (*v1.Namespace, error) { - return c.clientGetter.Namespaces().Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.Namespace{} + return result, c.client.Create(context.TODO(), "", obj, result, metav1.CreateOptions{}) } func (c *namespaceController) Update(obj *v1.Namespace) (*v1.Namespace, error) { - return c.clientGetter.Namespaces().Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Namespace{} + return result, c.client.Update(context.TODO(), "", obj, result, metav1.UpdateOptions{}) } func (c *namespaceController) UpdateStatus(obj *v1.Namespace) (*v1.Namespace, error) { - return c.clientGetter.Namespaces().UpdateStatus(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Namespace{} + return result, c.client.UpdateStatus(context.TODO(), "", obj, result, metav1.UpdateOptions{}) } func (c *namespaceController) Delete(name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.Namespaces().Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), "", name, *options) } func (c *namespaceController) Get(name string, options metav1.GetOptions) (*v1.Namespace, error) { - return c.clientGetter.Namespaces().Get(context.TODO(), name, options) + result := &v1.Namespace{} + return result, c.client.Get(context.TODO(), "", name, result, options) } func (c *namespaceController) List(opts metav1.ListOptions) (*v1.NamespaceList, error) { - return c.clientGetter.Namespaces().List(context.TODO(), opts) + result := &v1.NamespaceList{} + return result, c.client.List(context.TODO(), "", result, opts) } func (c *namespaceController) Watch(opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.Namespaces().Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), "", opts) } -func (c *namespaceController) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Namespace, err error) { - return c.clientGetter.Namespaces().Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *namespaceController) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (*v1.Namespace, error) { + result := &v1.Namespace{} + return result, c.client.Patch(context.TODO(), "", name, pt, data, result, metav1.PatchOptions{}, subresources...) } type namespaceCache struct { - lister listers.NamespaceLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *namespaceCache) Get(name string) (*v1.Namespace, error) { - return c.lister.Get(name) + obj, exists, err := c.indexer.GetByKey(name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.Namespace), nil } -func (c *namespaceCache) List(selector labels.Selector) ([]*v1.Namespace, error) { - return c.lister.List(selector) +func (c *namespaceCache) List(selector labels.Selector) (ret []*v1.Namespace, err error) { + + err = cache.ListAll(c.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Namespace)) + }) + + return ret, err } func (c *namespaceCache) AddIndexer(indexName string, indexer NamespaceIndexer) { diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/node.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/node.go similarity index 78% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/node.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/node.go index 1ef583d47d63..d0de0bc7cb8f 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/node.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/node.go @@ -22,6 +22,8 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/apply" "github.com/rancher/wrangler/pkg/condition" "github.com/rancher/wrangler/pkg/generic" @@ -36,9 +38,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/core/v1" - clientset "k8s.io/client-go/kubernetes/typed/core/v1" - listers "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" ) @@ -78,18 +77,22 @@ type NodeCache interface { type NodeIndexer func(obj *v1.Node) ([]string, error) type nodeController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.NodesGetter - informer informers.NodeInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewNodeController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.NodesGetter, informer informers.NodeInformer) NodeController { +func NewNodeController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) NodeController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &nodeController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -136,12 +139,11 @@ func UpdateNodeDeepCopyOnChange(client NodeClient, obj *v1.Node, handler func(ob } func (c *nodeController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *nodeController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *nodeController) OnChange(ctx context.Context, name string, sync NodeHandler) { @@ -149,20 +151,19 @@ func (c *nodeController) OnChange(ctx context.Context, name string, sync NodeHan } func (c *nodeController) OnRemove(ctx context.Context, name string, sync NodeHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromNodeHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromNodeHandlerToHandler(sync))) } func (c *nodeController) Enqueue(name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), "", name) + c.controller.Enqueue("", name) } func (c *nodeController) EnqueueAfter(name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), "", name, duration) + c.controller.EnqueueAfter("", name, duration) } func (c *nodeController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *nodeController) GroupVersionKind() schema.GroupVersionKind { @@ -171,57 +172,75 @@ func (c *nodeController) GroupVersionKind() schema.GroupVersionKind { func (c *nodeController) Cache() NodeCache { return &nodeCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *nodeController) Create(obj *v1.Node) (*v1.Node, error) { - return c.clientGetter.Nodes().Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.Node{} + return result, c.client.Create(context.TODO(), "", obj, result, metav1.CreateOptions{}) } func (c *nodeController) Update(obj *v1.Node) (*v1.Node, error) { - return c.clientGetter.Nodes().Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Node{} + return result, c.client.Update(context.TODO(), "", obj, result, metav1.UpdateOptions{}) } func (c *nodeController) UpdateStatus(obj *v1.Node) (*v1.Node, error) { - return c.clientGetter.Nodes().UpdateStatus(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Node{} + return result, c.client.UpdateStatus(context.TODO(), "", obj, result, metav1.UpdateOptions{}) } func (c *nodeController) Delete(name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.Nodes().Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), "", name, *options) } func (c *nodeController) Get(name string, options metav1.GetOptions) (*v1.Node, error) { - return c.clientGetter.Nodes().Get(context.TODO(), name, options) + result := &v1.Node{} + return result, c.client.Get(context.TODO(), "", name, result, options) } func (c *nodeController) List(opts metav1.ListOptions) (*v1.NodeList, error) { - return c.clientGetter.Nodes().List(context.TODO(), opts) + result := &v1.NodeList{} + return result, c.client.List(context.TODO(), "", result, opts) } func (c *nodeController) Watch(opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.Nodes().Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), "", opts) } -func (c *nodeController) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Node, err error) { - return c.clientGetter.Nodes().Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *nodeController) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (*v1.Node, error) { + result := &v1.Node{} + return result, c.client.Patch(context.TODO(), "", name, pt, data, result, metav1.PatchOptions{}, subresources...) } type nodeCache struct { - lister listers.NodeLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *nodeCache) Get(name string) (*v1.Node, error) { - return c.lister.Get(name) + obj, exists, err := c.indexer.GetByKey(name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.Node), nil } -func (c *nodeCache) List(selector labels.Selector) ([]*v1.Node, error) { - return c.lister.List(selector) +func (c *nodeCache) List(selector labels.Selector) (ret []*v1.Node, err error) { + + err = cache.ListAll(c.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Node)) + }) + + return ret, err } func (c *nodeCache) AddIndexer(indexName string, indexer NodeIndexer) { diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/persistentvolumeclaim.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/persistentvolumeclaim.go similarity index 80% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/persistentvolumeclaim.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/persistentvolumeclaim.go index be41b9acd199..485ce1e0133e 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/persistentvolumeclaim.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/persistentvolumeclaim.go @@ -22,6 +22,8 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/apply" "github.com/rancher/wrangler/pkg/condition" "github.com/rancher/wrangler/pkg/generic" @@ -36,9 +38,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/core/v1" - clientset "k8s.io/client-go/kubernetes/typed/core/v1" - listers "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" ) @@ -78,18 +77,22 @@ type PersistentVolumeClaimCache interface { type PersistentVolumeClaimIndexer func(obj *v1.PersistentVolumeClaim) ([]string, error) type persistentVolumeClaimController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.PersistentVolumeClaimsGetter - informer informers.PersistentVolumeClaimInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewPersistentVolumeClaimController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.PersistentVolumeClaimsGetter, informer informers.PersistentVolumeClaimInformer) PersistentVolumeClaimController { +func NewPersistentVolumeClaimController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) PersistentVolumeClaimController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &persistentVolumeClaimController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -136,12 +139,11 @@ func UpdatePersistentVolumeClaimDeepCopyOnChange(client PersistentVolumeClaimCli } func (c *persistentVolumeClaimController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *persistentVolumeClaimController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *persistentVolumeClaimController) OnChange(ctx context.Context, name string, sync PersistentVolumeClaimHandler) { @@ -149,20 +151,19 @@ func (c *persistentVolumeClaimController) OnChange(ctx context.Context, name str } func (c *persistentVolumeClaimController) OnRemove(ctx context.Context, name string, sync PersistentVolumeClaimHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromPersistentVolumeClaimHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromPersistentVolumeClaimHandlerToHandler(sync))) } func (c *persistentVolumeClaimController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *persistentVolumeClaimController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *persistentVolumeClaimController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *persistentVolumeClaimController) GroupVersionKind() schema.GroupVersionKind { @@ -171,57 +172,75 @@ func (c *persistentVolumeClaimController) GroupVersionKind() schema.GroupVersion func (c *persistentVolumeClaimController) Cache() PersistentVolumeClaimCache { return &persistentVolumeClaimCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *persistentVolumeClaimController) Create(obj *v1.PersistentVolumeClaim) (*v1.PersistentVolumeClaim, error) { - return c.clientGetter.PersistentVolumeClaims(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.PersistentVolumeClaim{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *persistentVolumeClaimController) Update(obj *v1.PersistentVolumeClaim) (*v1.PersistentVolumeClaim, error) { - return c.clientGetter.PersistentVolumeClaims(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.PersistentVolumeClaim{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *persistentVolumeClaimController) UpdateStatus(obj *v1.PersistentVolumeClaim) (*v1.PersistentVolumeClaim, error) { - return c.clientGetter.PersistentVolumeClaims(obj.Namespace).UpdateStatus(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.PersistentVolumeClaim{} + return result, c.client.UpdateStatus(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *persistentVolumeClaimController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.PersistentVolumeClaims(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *persistentVolumeClaimController) Get(namespace, name string, options metav1.GetOptions) (*v1.PersistentVolumeClaim, error) { - return c.clientGetter.PersistentVolumeClaims(namespace).Get(context.TODO(), name, options) + result := &v1.PersistentVolumeClaim{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *persistentVolumeClaimController) List(namespace string, opts metav1.ListOptions) (*v1.PersistentVolumeClaimList, error) { - return c.clientGetter.PersistentVolumeClaims(namespace).List(context.TODO(), opts) + result := &v1.PersistentVolumeClaimList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *persistentVolumeClaimController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.PersistentVolumeClaims(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *persistentVolumeClaimController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.PersistentVolumeClaim, err error) { - return c.clientGetter.PersistentVolumeClaims(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *persistentVolumeClaimController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.PersistentVolumeClaim, error) { + result := &v1.PersistentVolumeClaim{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type persistentVolumeClaimCache struct { - lister listers.PersistentVolumeClaimLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *persistentVolumeClaimCache) Get(namespace, name string) (*v1.PersistentVolumeClaim, error) { - return c.lister.PersistentVolumeClaims(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.PersistentVolumeClaim), nil } -func (c *persistentVolumeClaimCache) List(namespace string, selector labels.Selector) ([]*v1.PersistentVolumeClaim, error) { - return c.lister.PersistentVolumeClaims(namespace).List(selector) +func (c *persistentVolumeClaimCache) List(namespace string, selector labels.Selector) (ret []*v1.PersistentVolumeClaim, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.PersistentVolumeClaim)) + }) + + return ret, err } func (c *persistentVolumeClaimCache) AddIndexer(indexName string, indexer PersistentVolumeClaimIndexer) { diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/pod.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/pod.go similarity index 77% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/pod.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/pod.go index e808414d4950..d3321d98e1d1 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/pod.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/pod.go @@ -22,6 +22,8 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/apply" "github.com/rancher/wrangler/pkg/condition" "github.com/rancher/wrangler/pkg/generic" @@ -36,9 +38,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/core/v1" - clientset "k8s.io/client-go/kubernetes/typed/core/v1" - listers "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" ) @@ -78,18 +77,22 @@ type PodCache interface { type PodIndexer func(obj *v1.Pod) ([]string, error) type podController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.PodsGetter - informer informers.PodInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewPodController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.PodsGetter, informer informers.PodInformer) PodController { +func NewPodController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) PodController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &podController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -136,12 +139,11 @@ func UpdatePodDeepCopyOnChange(client PodClient, obj *v1.Pod, handler func(obj * } func (c *podController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *podController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *podController) OnChange(ctx context.Context, name string, sync PodHandler) { @@ -149,20 +151,19 @@ func (c *podController) OnChange(ctx context.Context, name string, sync PodHandl } func (c *podController) OnRemove(ctx context.Context, name string, sync PodHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromPodHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromPodHandlerToHandler(sync))) } func (c *podController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *podController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *podController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *podController) GroupVersionKind() schema.GroupVersionKind { @@ -171,57 +172,75 @@ func (c *podController) GroupVersionKind() schema.GroupVersionKind { func (c *podController) Cache() PodCache { return &podCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *podController) Create(obj *v1.Pod) (*v1.Pod, error) { - return c.clientGetter.Pods(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.Pod{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *podController) Update(obj *v1.Pod) (*v1.Pod, error) { - return c.clientGetter.Pods(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Pod{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *podController) UpdateStatus(obj *v1.Pod) (*v1.Pod, error) { - return c.clientGetter.Pods(obj.Namespace).UpdateStatus(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Pod{} + return result, c.client.UpdateStatus(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *podController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.Pods(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *podController) Get(namespace, name string, options metav1.GetOptions) (*v1.Pod, error) { - return c.clientGetter.Pods(namespace).Get(context.TODO(), name, options) + result := &v1.Pod{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *podController) List(namespace string, opts metav1.ListOptions) (*v1.PodList, error) { - return c.clientGetter.Pods(namespace).List(context.TODO(), opts) + result := &v1.PodList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *podController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.Pods(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *podController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Pod, err error) { - return c.clientGetter.Pods(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *podController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.Pod, error) { + result := &v1.Pod{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type podCache struct { - lister listers.PodLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *podCache) Get(namespace, name string) (*v1.Pod, error) { - return c.lister.Pods(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.Pod), nil } -func (c *podCache) List(namespace string, selector labels.Selector) ([]*v1.Pod, error) { - return c.lister.Pods(namespace).List(selector) +func (c *podCache) List(namespace string, selector labels.Selector) (ret []*v1.Pod, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Pod)) + }) + + return ret, err } func (c *podCache) AddIndexer(indexName string, indexer PodIndexer) { diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/secret.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/secret.go similarity index 70% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/secret.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/secret.go index c91479a5c874..55cc637076ae 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/secret.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/secret.go @@ -22,9 +22,12 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/generic" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" + "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" @@ -32,9 +35,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/core/v1" - clientset "k8s.io/client-go/kubernetes/typed/core/v1" - listers "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" ) @@ -74,18 +74,22 @@ type SecretCache interface { type SecretIndexer func(obj *v1.Secret) ([]string, error) type secretController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.SecretsGetter - informer informers.SecretInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewSecretController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.SecretsGetter, informer informers.SecretInformer) SecretController { +func NewSecretController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) SecretController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &secretController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -132,12 +136,11 @@ func UpdateSecretDeepCopyOnChange(client SecretClient, obj *v1.Secret, handler f } func (c *secretController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *secretController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *secretController) OnChange(ctx context.Context, name string, sync SecretHandler) { @@ -145,20 +148,19 @@ func (c *secretController) OnChange(ctx context.Context, name string, sync Secre } func (c *secretController) OnRemove(ctx context.Context, name string, sync SecretHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromSecretHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromSecretHandlerToHandler(sync))) } func (c *secretController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *secretController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *secretController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *secretController) GroupVersionKind() schema.GroupVersionKind { @@ -167,53 +169,70 @@ func (c *secretController) GroupVersionKind() schema.GroupVersionKind { func (c *secretController) Cache() SecretCache { return &secretCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *secretController) Create(obj *v1.Secret) (*v1.Secret, error) { - return c.clientGetter.Secrets(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.Secret{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *secretController) Update(obj *v1.Secret) (*v1.Secret, error) { - return c.clientGetter.Secrets(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Secret{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *secretController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.Secrets(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *secretController) Get(namespace, name string, options metav1.GetOptions) (*v1.Secret, error) { - return c.clientGetter.Secrets(namespace).Get(context.TODO(), name, options) + result := &v1.Secret{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *secretController) List(namespace string, opts metav1.ListOptions) (*v1.SecretList, error) { - return c.clientGetter.Secrets(namespace).List(context.TODO(), opts) + result := &v1.SecretList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *secretController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.Secrets(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *secretController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Secret, err error) { - return c.clientGetter.Secrets(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *secretController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.Secret, error) { + result := &v1.Secret{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type secretCache struct { - lister listers.SecretLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *secretCache) Get(namespace, name string) (*v1.Secret, error) { - return c.lister.Secrets(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.Secret), nil } -func (c *secretCache) List(namespace string, selector labels.Selector) ([]*v1.Secret, error) { - return c.lister.Secrets(namespace).List(selector) +func (c *secretCache) List(namespace string, selector labels.Selector) (ret []*v1.Secret, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Secret)) + }) + + return ret, err } func (c *secretCache) AddIndexer(indexName string, indexer SecretIndexer) { diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/service.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/service.go similarity index 78% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/service.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/service.go index 28fba8f794ac..d3f3c2368947 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/service.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/service.go @@ -22,6 +22,8 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/apply" "github.com/rancher/wrangler/pkg/condition" "github.com/rancher/wrangler/pkg/generic" @@ -36,9 +38,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/core/v1" - clientset "k8s.io/client-go/kubernetes/typed/core/v1" - listers "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" ) @@ -78,18 +77,22 @@ type ServiceCache interface { type ServiceIndexer func(obj *v1.Service) ([]string, error) type serviceController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.ServicesGetter - informer informers.ServiceInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewServiceController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.ServicesGetter, informer informers.ServiceInformer) ServiceController { +func NewServiceController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) ServiceController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &serviceController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -136,12 +139,11 @@ func UpdateServiceDeepCopyOnChange(client ServiceClient, obj *v1.Service, handle } func (c *serviceController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *serviceController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *serviceController) OnChange(ctx context.Context, name string, sync ServiceHandler) { @@ -149,20 +151,19 @@ func (c *serviceController) OnChange(ctx context.Context, name string, sync Serv } func (c *serviceController) OnRemove(ctx context.Context, name string, sync ServiceHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromServiceHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromServiceHandlerToHandler(sync))) } func (c *serviceController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *serviceController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *serviceController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *serviceController) GroupVersionKind() schema.GroupVersionKind { @@ -171,57 +172,75 @@ func (c *serviceController) GroupVersionKind() schema.GroupVersionKind { func (c *serviceController) Cache() ServiceCache { return &serviceCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *serviceController) Create(obj *v1.Service) (*v1.Service, error) { - return c.clientGetter.Services(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.Service{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *serviceController) Update(obj *v1.Service) (*v1.Service, error) { - return c.clientGetter.Services(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Service{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *serviceController) UpdateStatus(obj *v1.Service) (*v1.Service, error) { - return c.clientGetter.Services(obj.Namespace).UpdateStatus(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Service{} + return result, c.client.UpdateStatus(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *serviceController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.Services(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *serviceController) Get(namespace, name string, options metav1.GetOptions) (*v1.Service, error) { - return c.clientGetter.Services(namespace).Get(context.TODO(), name, options) + result := &v1.Service{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *serviceController) List(namespace string, opts metav1.ListOptions) (*v1.ServiceList, error) { - return c.clientGetter.Services(namespace).List(context.TODO(), opts) + result := &v1.ServiceList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *serviceController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.Services(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *serviceController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Service, err error) { - return c.clientGetter.Services(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *serviceController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.Service, error) { + result := &v1.Service{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type serviceCache struct { - lister listers.ServiceLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *serviceCache) Get(namespace, name string) (*v1.Service, error) { - return c.lister.Services(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.Service), nil } -func (c *serviceCache) List(namespace string, selector labels.Selector) ([]*v1.Service, error) { - return c.lister.Services(namespace).List(selector) +func (c *serviceCache) List(namespace string, selector labels.Selector) (ret []*v1.Service, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Service)) + }) + + return ret, err } func (c *serviceCache) AddIndexer(indexName string, indexer ServiceIndexer) { diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/serviceaccount.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/serviceaccount.go similarity index 71% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/serviceaccount.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/serviceaccount.go index abfb22f4505d..f9a81cc8fa2f 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1/serviceaccount.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/core/v1/serviceaccount.go @@ -22,9 +22,12 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/generic" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/equality" + "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" @@ -32,9 +35,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/core/v1" - clientset "k8s.io/client-go/kubernetes/typed/core/v1" - listers "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" ) @@ -74,18 +74,22 @@ type ServiceAccountCache interface { type ServiceAccountIndexer func(obj *v1.ServiceAccount) ([]string, error) type serviceAccountController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.ServiceAccountsGetter - informer informers.ServiceAccountInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewServiceAccountController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.ServiceAccountsGetter, informer informers.ServiceAccountInformer) ServiceAccountController { +func NewServiceAccountController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) ServiceAccountController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &serviceAccountController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -132,12 +136,11 @@ func UpdateServiceAccountDeepCopyOnChange(client ServiceAccountClient, obj *v1.S } func (c *serviceAccountController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *serviceAccountController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *serviceAccountController) OnChange(ctx context.Context, name string, sync ServiceAccountHandler) { @@ -145,20 +148,19 @@ func (c *serviceAccountController) OnChange(ctx context.Context, name string, sy } func (c *serviceAccountController) OnRemove(ctx context.Context, name string, sync ServiceAccountHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromServiceAccountHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromServiceAccountHandlerToHandler(sync))) } func (c *serviceAccountController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *serviceAccountController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *serviceAccountController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *serviceAccountController) GroupVersionKind() schema.GroupVersionKind { @@ -167,53 +169,70 @@ func (c *serviceAccountController) GroupVersionKind() schema.GroupVersionKind { func (c *serviceAccountController) Cache() ServiceAccountCache { return &serviceAccountCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *serviceAccountController) Create(obj *v1.ServiceAccount) (*v1.ServiceAccount, error) { - return c.clientGetter.ServiceAccounts(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.ServiceAccount{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *serviceAccountController) Update(obj *v1.ServiceAccount) (*v1.ServiceAccount, error) { - return c.clientGetter.ServiceAccounts(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.ServiceAccount{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *serviceAccountController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.ServiceAccounts(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *serviceAccountController) Get(namespace, name string, options metav1.GetOptions) (*v1.ServiceAccount, error) { - return c.clientGetter.ServiceAccounts(namespace).Get(context.TODO(), name, options) + result := &v1.ServiceAccount{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *serviceAccountController) List(namespace string, opts metav1.ListOptions) (*v1.ServiceAccountList, error) { - return c.clientGetter.ServiceAccounts(namespace).List(context.TODO(), opts) + result := &v1.ServiceAccountList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *serviceAccountController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.ServiceAccounts(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *serviceAccountController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ServiceAccount, err error) { - return c.clientGetter.ServiceAccounts(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *serviceAccountController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.ServiceAccount, error) { + result := &v1.ServiceAccount{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type serviceAccountCache struct { - lister listers.ServiceAccountLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *serviceAccountCache) Get(namespace, name string) (*v1.ServiceAccount, error) { - return c.lister.ServiceAccounts(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.ServiceAccount), nil } -func (c *serviceAccountCache) List(namespace string, selector labels.Selector) ([]*v1.ServiceAccount, error) { - return c.lister.ServiceAccounts(namespace).List(selector) +func (c *serviceAccountCache) List(namespace string, selector labels.Selector) (ret []*v1.ServiceAccount, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.ServiceAccount)) + }) + + return ret, err } func (c *serviceAccountCache) AddIndexer(indexName string, indexer ServiceAccountIndexer) { diff --git a/vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/factory.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/factory.go new file mode 100644 index 000000000000..b654d347877e --- /dev/null +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/factory.go @@ -0,0 +1,59 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by main. DO NOT EDIT. + +package rbac + +import ( + "github.com/rancher/wrangler/pkg/generic" + "k8s.io/client-go/rest" +) + +type Factory struct { + *generic.Factory +} + +func NewFactoryFromConfigOrDie(config *rest.Config) *Factory { + f, err := NewFactoryFromConfig(config) + if err != nil { + panic(err) + } + return f +} + +func NewFactoryFromConfig(config *rest.Config) (*Factory, error) { + return NewFactoryFromConfigWithOptions(config, nil) +} + +func NewFactoryFromConfigWithNamespace(config *rest.Config, namespace string) (*Factory, error) { + return NewFactoryFromConfigWithOptions(config, &FactoryOptions{ + Namespace: namespace, + }) +} + +type FactoryOptions = generic.FactoryOptions + +func NewFactoryFromConfigWithOptions(config *rest.Config, opts *FactoryOptions) (*Factory, error) { + f, err := generic.NewFactoryFromConfigWithOptions(config, opts) + return &Factory{ + Factory: f, + }, err +} + +func (c *Factory) Rbac() Interface { + return New(c.ControllerFactory()) +} diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/interface.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/interface.go similarity index 56% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/interface.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/interface.go index 572969acfbe0..f4bb1f982f79 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/interface.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/interface.go @@ -19,10 +19,8 @@ limitations under the License. package rbac import ( - v1 "github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1" - "github.com/rancher/wrangler/pkg/generic" - informers "k8s.io/client-go/informers/rbac" - clientset "k8s.io/client-go/kubernetes" + "github.com/rancher/lasso/pkg/controller" + v1 "github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1" ) type Interface interface { @@ -30,21 +28,16 @@ type Interface interface { } type group struct { - controllerManager *generic.ControllerManager - informers informers.Interface - client clientset.Interface + controllerFactory controller.SharedControllerFactory } // New returns a new Interface. -func New(controllerManager *generic.ControllerManager, informers informers.Interface, - client clientset.Interface) Interface { +func New(controllerFactory controller.SharedControllerFactory) Interface { return &group{ - controllerManager: controllerManager, - informers: informers, - client: client, + controllerFactory: controllerFactory, } } func (g *group) V1() v1.Interface { - return v1.New(g.controllerManager, g.client.RbacV1(), g.informers.V1()) + return v1.New(g.controllerFactory) } diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1/clusterrole.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1/clusterrole.go similarity index 70% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1/clusterrole.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1/clusterrole.go index 8716a3e6938c..1c192736d5ca 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1/clusterrole.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1/clusterrole.go @@ -22,9 +22,12 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/generic" v1 "k8s.io/api/rbac/v1" "k8s.io/apimachinery/pkg/api/equality" + "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" @@ -32,9 +35,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/rbac/v1" - clientset "k8s.io/client-go/kubernetes/typed/rbac/v1" - listers "k8s.io/client-go/listers/rbac/v1" "k8s.io/client-go/tools/cache" ) @@ -74,18 +74,22 @@ type ClusterRoleCache interface { type ClusterRoleIndexer func(obj *v1.ClusterRole) ([]string, error) type clusterRoleController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.ClusterRolesGetter - informer informers.ClusterRoleInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewClusterRoleController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.ClusterRolesGetter, informer informers.ClusterRoleInformer) ClusterRoleController { +func NewClusterRoleController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) ClusterRoleController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &clusterRoleController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -132,12 +136,11 @@ func UpdateClusterRoleDeepCopyOnChange(client ClusterRoleClient, obj *v1.Cluster } func (c *clusterRoleController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *clusterRoleController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *clusterRoleController) OnChange(ctx context.Context, name string, sync ClusterRoleHandler) { @@ -145,20 +148,19 @@ func (c *clusterRoleController) OnChange(ctx context.Context, name string, sync } func (c *clusterRoleController) OnRemove(ctx context.Context, name string, sync ClusterRoleHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromClusterRoleHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromClusterRoleHandlerToHandler(sync))) } func (c *clusterRoleController) Enqueue(name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), "", name) + c.controller.Enqueue("", name) } func (c *clusterRoleController) EnqueueAfter(name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), "", name, duration) + c.controller.EnqueueAfter("", name, duration) } func (c *clusterRoleController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *clusterRoleController) GroupVersionKind() schema.GroupVersionKind { @@ -167,53 +169,70 @@ func (c *clusterRoleController) GroupVersionKind() schema.GroupVersionKind { func (c *clusterRoleController) Cache() ClusterRoleCache { return &clusterRoleCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *clusterRoleController) Create(obj *v1.ClusterRole) (*v1.ClusterRole, error) { - return c.clientGetter.ClusterRoles().Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.ClusterRole{} + return result, c.client.Create(context.TODO(), "", obj, result, metav1.CreateOptions{}) } func (c *clusterRoleController) Update(obj *v1.ClusterRole) (*v1.ClusterRole, error) { - return c.clientGetter.ClusterRoles().Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.ClusterRole{} + return result, c.client.Update(context.TODO(), "", obj, result, metav1.UpdateOptions{}) } func (c *clusterRoleController) Delete(name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.ClusterRoles().Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), "", name, *options) } func (c *clusterRoleController) Get(name string, options metav1.GetOptions) (*v1.ClusterRole, error) { - return c.clientGetter.ClusterRoles().Get(context.TODO(), name, options) + result := &v1.ClusterRole{} + return result, c.client.Get(context.TODO(), "", name, result, options) } func (c *clusterRoleController) List(opts metav1.ListOptions) (*v1.ClusterRoleList, error) { - return c.clientGetter.ClusterRoles().List(context.TODO(), opts) + result := &v1.ClusterRoleList{} + return result, c.client.List(context.TODO(), "", result, opts) } func (c *clusterRoleController) Watch(opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.ClusterRoles().Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), "", opts) } -func (c *clusterRoleController) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ClusterRole, err error) { - return c.clientGetter.ClusterRoles().Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *clusterRoleController) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (*v1.ClusterRole, error) { + result := &v1.ClusterRole{} + return result, c.client.Patch(context.TODO(), "", name, pt, data, result, metav1.PatchOptions{}, subresources...) } type clusterRoleCache struct { - lister listers.ClusterRoleLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *clusterRoleCache) Get(name string) (*v1.ClusterRole, error) { - return c.lister.Get(name) + obj, exists, err := c.indexer.GetByKey(name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.ClusterRole), nil } -func (c *clusterRoleCache) List(selector labels.Selector) ([]*v1.ClusterRole, error) { - return c.lister.List(selector) +func (c *clusterRoleCache) List(selector labels.Selector) (ret []*v1.ClusterRole, err error) { + + err = cache.ListAll(c.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.ClusterRole)) + }) + + return ret, err } func (c *clusterRoleCache) AddIndexer(indexName string, indexer ClusterRoleIndexer) { diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1/clusterrolebinding.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1/clusterrolebinding.go similarity index 73% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1/clusterrolebinding.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1/clusterrolebinding.go index ceb704765186..8673b6a201d7 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1/clusterrolebinding.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1/clusterrolebinding.go @@ -22,9 +22,12 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/generic" v1 "k8s.io/api/rbac/v1" "k8s.io/apimachinery/pkg/api/equality" + "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" @@ -32,9 +35,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/rbac/v1" - clientset "k8s.io/client-go/kubernetes/typed/rbac/v1" - listers "k8s.io/client-go/listers/rbac/v1" "k8s.io/client-go/tools/cache" ) @@ -74,18 +74,22 @@ type ClusterRoleBindingCache interface { type ClusterRoleBindingIndexer func(obj *v1.ClusterRoleBinding) ([]string, error) type clusterRoleBindingController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.ClusterRoleBindingsGetter - informer informers.ClusterRoleBindingInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewClusterRoleBindingController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.ClusterRoleBindingsGetter, informer informers.ClusterRoleBindingInformer) ClusterRoleBindingController { +func NewClusterRoleBindingController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) ClusterRoleBindingController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &clusterRoleBindingController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -132,12 +136,11 @@ func UpdateClusterRoleBindingDeepCopyOnChange(client ClusterRoleBindingClient, o } func (c *clusterRoleBindingController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *clusterRoleBindingController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *clusterRoleBindingController) OnChange(ctx context.Context, name string, sync ClusterRoleBindingHandler) { @@ -145,20 +148,19 @@ func (c *clusterRoleBindingController) OnChange(ctx context.Context, name string } func (c *clusterRoleBindingController) OnRemove(ctx context.Context, name string, sync ClusterRoleBindingHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromClusterRoleBindingHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromClusterRoleBindingHandlerToHandler(sync))) } func (c *clusterRoleBindingController) Enqueue(name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), "", name) + c.controller.Enqueue("", name) } func (c *clusterRoleBindingController) EnqueueAfter(name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), "", name, duration) + c.controller.EnqueueAfter("", name, duration) } func (c *clusterRoleBindingController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *clusterRoleBindingController) GroupVersionKind() schema.GroupVersionKind { @@ -167,53 +169,70 @@ func (c *clusterRoleBindingController) GroupVersionKind() schema.GroupVersionKin func (c *clusterRoleBindingController) Cache() ClusterRoleBindingCache { return &clusterRoleBindingCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *clusterRoleBindingController) Create(obj *v1.ClusterRoleBinding) (*v1.ClusterRoleBinding, error) { - return c.clientGetter.ClusterRoleBindings().Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.ClusterRoleBinding{} + return result, c.client.Create(context.TODO(), "", obj, result, metav1.CreateOptions{}) } func (c *clusterRoleBindingController) Update(obj *v1.ClusterRoleBinding) (*v1.ClusterRoleBinding, error) { - return c.clientGetter.ClusterRoleBindings().Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.ClusterRoleBinding{} + return result, c.client.Update(context.TODO(), "", obj, result, metav1.UpdateOptions{}) } func (c *clusterRoleBindingController) Delete(name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.ClusterRoleBindings().Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), "", name, *options) } func (c *clusterRoleBindingController) Get(name string, options metav1.GetOptions) (*v1.ClusterRoleBinding, error) { - return c.clientGetter.ClusterRoleBindings().Get(context.TODO(), name, options) + result := &v1.ClusterRoleBinding{} + return result, c.client.Get(context.TODO(), "", name, result, options) } func (c *clusterRoleBindingController) List(opts metav1.ListOptions) (*v1.ClusterRoleBindingList, error) { - return c.clientGetter.ClusterRoleBindings().List(context.TODO(), opts) + result := &v1.ClusterRoleBindingList{} + return result, c.client.List(context.TODO(), "", result, opts) } func (c *clusterRoleBindingController) Watch(opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.ClusterRoleBindings().Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), "", opts) } -func (c *clusterRoleBindingController) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.ClusterRoleBinding, err error) { - return c.clientGetter.ClusterRoleBindings().Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *clusterRoleBindingController) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (*v1.ClusterRoleBinding, error) { + result := &v1.ClusterRoleBinding{} + return result, c.client.Patch(context.TODO(), "", name, pt, data, result, metav1.PatchOptions{}, subresources...) } type clusterRoleBindingCache struct { - lister listers.ClusterRoleBindingLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *clusterRoleBindingCache) Get(name string) (*v1.ClusterRoleBinding, error) { - return c.lister.Get(name) + obj, exists, err := c.indexer.GetByKey(name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.ClusterRoleBinding), nil } -func (c *clusterRoleBindingCache) List(selector labels.Selector) ([]*v1.ClusterRoleBinding, error) { - return c.lister.List(selector) +func (c *clusterRoleBindingCache) List(selector labels.Selector) (ret []*v1.ClusterRoleBinding, err error) { + + err = cache.ListAll(c.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.ClusterRoleBinding)) + }) + + return ret, err } func (c *clusterRoleBindingCache) AddIndexer(indexName string, indexer ClusterRoleBindingIndexer) { diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1/interface.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1/interface.go similarity index 51% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1/interface.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1/interface.go index 8c62786369bc..1dbb1045a019 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1/interface.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1/interface.go @@ -19,12 +19,16 @@ limitations under the License. package v1 import ( - "github.com/rancher/wrangler/pkg/generic" + "github.com/rancher/lasso/pkg/controller" + "github.com/rancher/wrangler/pkg/schemes" v1 "k8s.io/api/rbac/v1" - informers "k8s.io/client-go/informers/rbac/v1" - clientset "k8s.io/client-go/kubernetes/typed/rbac/v1" + "k8s.io/apimachinery/pkg/runtime/schema" ) +func init() { + schemes.Register(v1.AddToScheme) +} + type Interface interface { ClusterRole() ClusterRoleController ClusterRoleBinding() ClusterRoleBindingController @@ -32,30 +36,25 @@ type Interface interface { RoleBinding() RoleBindingController } -func New(controllerManager *generic.ControllerManager, client clientset.RbacV1Interface, - informers informers.Interface) Interface { +func New(controllerFactory controller.SharedControllerFactory) Interface { return &version{ - controllerManager: controllerManager, - client: client, - informers: informers, + controllerFactory: controllerFactory, } } type version struct { - controllerManager *generic.ControllerManager - informers informers.Interface - client clientset.RbacV1Interface + controllerFactory controller.SharedControllerFactory } func (c *version) ClusterRole() ClusterRoleController { - return NewClusterRoleController(v1.SchemeGroupVersion.WithKind("ClusterRole"), c.controllerManager, c.client, c.informers.ClusterRoles()) + return NewClusterRoleController(schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRole"}, "clusterroles", false, c.controllerFactory) } func (c *version) ClusterRoleBinding() ClusterRoleBindingController { - return NewClusterRoleBindingController(v1.SchemeGroupVersion.WithKind("ClusterRoleBinding"), c.controllerManager, c.client, c.informers.ClusterRoleBindings()) + return NewClusterRoleBindingController(schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRoleBinding"}, "clusterrolebindings", false, c.controllerFactory) } func (c *version) Role() RoleController { - return NewRoleController(v1.SchemeGroupVersion.WithKind("Role"), c.controllerManager, c.client, c.informers.Roles()) + return NewRoleController(schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "Role"}, "roles", true, c.controllerFactory) } func (c *version) RoleBinding() RoleBindingController { - return NewRoleBindingController(v1.SchemeGroupVersion.WithKind("RoleBinding"), c.controllerManager, c.client, c.informers.RoleBindings()) + return NewRoleBindingController(schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "RoleBinding"}, "rolebindings", true, c.controllerFactory) } diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1/role.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1/role.go similarity index 70% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1/role.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1/role.go index 8229c45924b7..a3b113eae64a 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1/role.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1/role.go @@ -22,9 +22,12 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/generic" v1 "k8s.io/api/rbac/v1" "k8s.io/apimachinery/pkg/api/equality" + "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" @@ -32,9 +35,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/rbac/v1" - clientset "k8s.io/client-go/kubernetes/typed/rbac/v1" - listers "k8s.io/client-go/listers/rbac/v1" "k8s.io/client-go/tools/cache" ) @@ -74,18 +74,22 @@ type RoleCache interface { type RoleIndexer func(obj *v1.Role) ([]string, error) type roleController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.RolesGetter - informer informers.RoleInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewRoleController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.RolesGetter, informer informers.RoleInformer) RoleController { +func NewRoleController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) RoleController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &roleController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -132,12 +136,11 @@ func UpdateRoleDeepCopyOnChange(client RoleClient, obj *v1.Role, handler func(ob } func (c *roleController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *roleController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *roleController) OnChange(ctx context.Context, name string, sync RoleHandler) { @@ -145,20 +148,19 @@ func (c *roleController) OnChange(ctx context.Context, name string, sync RoleHan } func (c *roleController) OnRemove(ctx context.Context, name string, sync RoleHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromRoleHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromRoleHandlerToHandler(sync))) } func (c *roleController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *roleController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *roleController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *roleController) GroupVersionKind() schema.GroupVersionKind { @@ -167,53 +169,70 @@ func (c *roleController) GroupVersionKind() schema.GroupVersionKind { func (c *roleController) Cache() RoleCache { return &roleCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *roleController) Create(obj *v1.Role) (*v1.Role, error) { - return c.clientGetter.Roles(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.Role{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *roleController) Update(obj *v1.Role) (*v1.Role, error) { - return c.clientGetter.Roles(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.Role{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *roleController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.Roles(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *roleController) Get(namespace, name string, options metav1.GetOptions) (*v1.Role, error) { - return c.clientGetter.Roles(namespace).Get(context.TODO(), name, options) + result := &v1.Role{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *roleController) List(namespace string, opts metav1.ListOptions) (*v1.RoleList, error) { - return c.clientGetter.Roles(namespace).List(context.TODO(), opts) + result := &v1.RoleList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *roleController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.Roles(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *roleController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.Role, err error) { - return c.clientGetter.Roles(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *roleController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.Role, error) { + result := &v1.Role{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type roleCache struct { - lister listers.RoleLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *roleCache) Get(namespace, name string) (*v1.Role, error) { - return c.lister.Roles(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.Role), nil } -func (c *roleCache) List(namespace string, selector labels.Selector) ([]*v1.Role, error) { - return c.lister.Roles(namespace).List(selector) +func (c *roleCache) List(namespace string, selector labels.Selector) (ret []*v1.Role, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.Role)) + }) + + return ret, err } func (c *roleCache) AddIndexer(indexName string, indexer RoleIndexer) { diff --git a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1/rolebinding.go b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1/rolebinding.go similarity index 71% rename from vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1/rolebinding.go rename to vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1/rolebinding.go index 0ef3f1077aac..383ffa15d8a2 100644 --- a/vendor/github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1/rolebinding.go +++ b/vendor/github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1/rolebinding.go @@ -22,9 +22,12 @@ import ( "context" "time" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" "github.com/rancher/wrangler/pkg/generic" v1 "k8s.io/api/rbac/v1" "k8s.io/apimachinery/pkg/api/equality" + "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" @@ -32,9 +35,6 @@ import ( "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/watch" - informers "k8s.io/client-go/informers/rbac/v1" - clientset "k8s.io/client-go/kubernetes/typed/rbac/v1" - listers "k8s.io/client-go/listers/rbac/v1" "k8s.io/client-go/tools/cache" ) @@ -74,18 +74,22 @@ type RoleBindingCache interface { type RoleBindingIndexer func(obj *v1.RoleBinding) ([]string, error) type roleBindingController struct { - controllerManager *generic.ControllerManager - clientGetter clientset.RoleBindingsGetter - informer informers.RoleBindingInformer - gvk schema.GroupVersionKind + controller controller.SharedController + client *client.Client + gvk schema.GroupVersionKind + groupResource schema.GroupResource } -func NewRoleBindingController(gvk schema.GroupVersionKind, controllerManager *generic.ControllerManager, clientGetter clientset.RoleBindingsGetter, informer informers.RoleBindingInformer) RoleBindingController { +func NewRoleBindingController(gvk schema.GroupVersionKind, resource string, namespaced bool, controller controller.SharedControllerFactory) RoleBindingController { + c := controller.ForResourceKind(gvk.GroupVersion().WithResource(resource), gvk.Kind, namespaced) return &roleBindingController{ - controllerManager: controllerManager, - clientGetter: clientGetter, - informer: informer, - gvk: gvk, + controller: c, + client: c.Client(), + gvk: gvk, + groupResource: schema.GroupResource{ + Group: gvk.Group, + Resource: resource, + }, } } @@ -132,12 +136,11 @@ func UpdateRoleBindingDeepCopyOnChange(client RoleBindingClient, obj *v1.RoleBin } func (c *roleBindingController) AddGenericHandler(ctx context.Context, name string, handler generic.Handler) { - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, handler) + c.controller.RegisterHandler(ctx, name, controller.SharedControllerHandlerFunc(handler)) } func (c *roleBindingController) AddGenericRemoveHandler(ctx context.Context, name string, handler generic.Handler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), handler) - c.controllerManager.AddHandler(ctx, c.gvk, c.informer.Informer(), name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), handler)) } func (c *roleBindingController) OnChange(ctx context.Context, name string, sync RoleBindingHandler) { @@ -145,20 +148,19 @@ func (c *roleBindingController) OnChange(ctx context.Context, name string, sync } func (c *roleBindingController) OnRemove(ctx context.Context, name string, sync RoleBindingHandler) { - removeHandler := generic.NewRemoveHandler(name, c.Updater(), FromRoleBindingHandlerToHandler(sync)) - c.AddGenericHandler(ctx, name, removeHandler) + c.AddGenericHandler(ctx, name, generic.NewRemoveHandler(name, c.Updater(), FromRoleBindingHandlerToHandler(sync))) } func (c *roleBindingController) Enqueue(namespace, name string) { - c.controllerManager.Enqueue(c.gvk, c.informer.Informer(), namespace, name) + c.controller.Enqueue(namespace, name) } func (c *roleBindingController) EnqueueAfter(namespace, name string, duration time.Duration) { - c.controllerManager.EnqueueAfter(c.gvk, c.informer.Informer(), namespace, name, duration) + c.controller.EnqueueAfter(namespace, name, duration) } func (c *roleBindingController) Informer() cache.SharedIndexInformer { - return c.informer.Informer() + return c.controller.Informer() } func (c *roleBindingController) GroupVersionKind() schema.GroupVersionKind { @@ -167,53 +169,70 @@ func (c *roleBindingController) GroupVersionKind() schema.GroupVersionKind { func (c *roleBindingController) Cache() RoleBindingCache { return &roleBindingCache{ - lister: c.informer.Lister(), - indexer: c.informer.Informer().GetIndexer(), + indexer: c.Informer().GetIndexer(), + resource: c.groupResource, } } func (c *roleBindingController) Create(obj *v1.RoleBinding) (*v1.RoleBinding, error) { - return c.clientGetter.RoleBindings(obj.Namespace).Create(context.TODO(), obj, metav1.CreateOptions{}) + result := &v1.RoleBinding{} + return result, c.client.Create(context.TODO(), obj.Namespace, obj, result, metav1.CreateOptions{}) } func (c *roleBindingController) Update(obj *v1.RoleBinding) (*v1.RoleBinding, error) { - return c.clientGetter.RoleBindings(obj.Namespace).Update(context.TODO(), obj, metav1.UpdateOptions{}) + result := &v1.RoleBinding{} + return result, c.client.Update(context.TODO(), obj.Namespace, obj, result, metav1.UpdateOptions{}) } func (c *roleBindingController) Delete(namespace, name string, options *metav1.DeleteOptions) error { if options == nil { options = &metav1.DeleteOptions{} } - return c.clientGetter.RoleBindings(namespace).Delete(context.TODO(), name, *options) + return c.client.Delete(context.TODO(), namespace, name, *options) } func (c *roleBindingController) Get(namespace, name string, options metav1.GetOptions) (*v1.RoleBinding, error) { - return c.clientGetter.RoleBindings(namespace).Get(context.TODO(), name, options) + result := &v1.RoleBinding{} + return result, c.client.Get(context.TODO(), namespace, name, result, options) } func (c *roleBindingController) List(namespace string, opts metav1.ListOptions) (*v1.RoleBindingList, error) { - return c.clientGetter.RoleBindings(namespace).List(context.TODO(), opts) + result := &v1.RoleBindingList{} + return result, c.client.List(context.TODO(), namespace, result, opts) } func (c *roleBindingController) Watch(namespace string, opts metav1.ListOptions) (watch.Interface, error) { - return c.clientGetter.RoleBindings(namespace).Watch(context.TODO(), opts) + return c.client.Watch(context.TODO(), namespace, opts) } -func (c *roleBindingController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (result *v1.RoleBinding, err error) { - return c.clientGetter.RoleBindings(namespace).Patch(context.TODO(), name, pt, data, metav1.PatchOptions{}, subresources...) +func (c *roleBindingController) Patch(namespace, name string, pt types.PatchType, data []byte, subresources ...string) (*v1.RoleBinding, error) { + result := &v1.RoleBinding{} + return result, c.client.Patch(context.TODO(), namespace, name, pt, data, result, metav1.PatchOptions{}, subresources...) } type roleBindingCache struct { - lister listers.RoleBindingLister - indexer cache.Indexer + indexer cache.Indexer + resource schema.GroupResource } func (c *roleBindingCache) Get(namespace, name string) (*v1.RoleBinding, error) { - return c.lister.RoleBindings(namespace).Get(name) + obj, exists, err := c.indexer.GetByKey(namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(c.resource, name) + } + return obj.(*v1.RoleBinding), nil } -func (c *roleBindingCache) List(namespace string, selector labels.Selector) ([]*v1.RoleBinding, error) { - return c.lister.RoleBindings(namespace).List(selector) +func (c *roleBindingCache) List(namespace string, selector labels.Selector) (ret []*v1.RoleBinding, err error) { + + err = cache.ListAllByNamespace(c.indexer, namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.RoleBinding)) + }) + + return ret, err } func (c *roleBindingCache) AddIndexer(indexName string, indexer RoleBindingIndexer) { diff --git a/vendor/github.com/rancher/wrangler/pkg/generic/controller.go b/vendor/github.com/rancher/wrangler/pkg/generic/controller.go index 4608875e444e..d713e0f2bea6 100644 --- a/vendor/github.com/rancher/wrangler/pkg/generic/controller.go +++ b/vendor/github.com/rancher/wrangler/pkg/generic/controller.go @@ -1,53 +1,19 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - package generic import ( "context" - errors2 "errors" - "fmt" - "strings" - "time" - errors3 "github.com/pkg/errors" - "github.com/sirupsen/logrus" - "k8s.io/apimachinery/pkg/api/meta" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "github.com/rancher/lasso/pkg/controller" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" - utilruntime "k8s.io/apimachinery/pkg/util/runtime" - "k8s.io/apimachinery/pkg/util/wait" "k8s.io/client-go/tools/cache" - "k8s.io/client-go/util/workqueue" ) -var ErrSkip = errors2.New("skip processing") +var ErrSkip = controller.ErrIgnore type Handler func(key string, obj runtime.Object) (runtime.Object, error) -// Controller is the controller implementation for Foo resources -type Controller struct { - name string - workqueue workqueue.RateLimitingInterface - informer cache.SharedIndexInformer - handler Handler - gvk schema.GroupVersionKind -} - type ControllerMeta interface { Informer() cache.SharedIndexInformer GroupVersionKind() schema.GroupVersionKind @@ -56,164 +22,3 @@ type ControllerMeta interface { AddGenericRemoveHandler(ctx context.Context, name string, handler Handler) Updater() Updater } - -// NewController returns a new sample controller -func NewController(gvk schema.GroupVersionKind, informer cache.SharedIndexInformer, workqueue workqueue.RateLimitingInterface, handler Handler) *Controller { - controller := &Controller{ - name: gvk.String(), - handler: handler, - informer: informer, - workqueue: workqueue, - } - - informer.AddEventHandler(cache.ResourceEventHandlerFuncs{ - AddFunc: controller.handleObject, - UpdateFunc: func(old, new interface{}) { - newMeta, err := meta.Accessor(new) - utilruntime.Must(err) - oldMeta, err := meta.Accessor(old) - utilruntime.Must(err) - if newMeta.GetResourceVersion() == oldMeta.GetResourceVersion() { - return - } - controller.handleObject(new) - }, - DeleteFunc: controller.handleObject, - }) - - return controller -} - -func (c *Controller) Informer() cache.SharedIndexInformer { - return c.informer -} - -func (c *Controller) GroupVersionKind() schema.GroupVersionKind { - return c.gvk -} - -func (c *Controller) run(threadiness int, stopCh <-chan struct{}) { - defer utilruntime.HandleCrash() - defer c.workqueue.ShutDown() - - // Start the informer factories to begin populating the informer caches - logrus.Infof("Starting %s controller", c.name) - - // Launch two workers to process Foo resources - for i := 0; i < threadiness; i++ { - go wait.Until(c.runWorker, time.Second, stopCh) - } - - <-stopCh - logrus.Infof("Shutting down %s workers", c.name) -} - -func (c *Controller) Run(threadiness int, stopCh <-chan struct{}) error { - if ok := cache.WaitForCacheSync(stopCh, c.informer.HasSynced); !ok { - c.workqueue.ShutDown() - return fmt.Errorf("failed to wait for caches to sync") - } - - go c.run(threadiness, stopCh) - return nil -} - -func (c *Controller) runWorker() { - for c.processNextWorkItem() { - } -} - -func (c *Controller) processNextWorkItem() bool { - obj, shutdown := c.workqueue.Get() - - if shutdown { - return false - } - - if err := c.processSingleItem(obj); err != nil { - if !strings.Contains(err.Error(), "please apply your changes to the latest version and try again") { - utilruntime.HandleError(err) - } - return true - } - - return true -} - -func (c *Controller) processSingleItem(obj interface{}) error { - var ( - key string - ok bool - ) - - defer c.workqueue.Done(obj) - - if key, ok = obj.(string); !ok { - c.workqueue.Forget(obj) - utilruntime.HandleError(fmt.Errorf("expected string in workqueue but got %#v", obj)) - return nil - } - if err := c.syncHandler(key); err != nil && errors3.Cause(err) != ErrSkip { - c.workqueue.AddRateLimited(key) - return fmt.Errorf("error syncing '%s': %s, requeuing", key, err.Error()) - } - - c.workqueue.Forget(obj) - return nil -} - -func (c *Controller) syncHandler(key string) error { - obj, exists, err := c.informer.GetStore().GetByKey(key) - if err != nil { - return err - } - if !exists { - _, err := c.handler(key, nil) - return err - } - - _, err = c.handler(key, obj.(runtime.Object)) - return err -} - -func (c *Controller) Enqueue(namespace, name string) { - if namespace == "" { - c.workqueue.AddRateLimited(name) - } else { - c.workqueue.AddRateLimited(namespace + "/" + name) - } -} - -func (c *Controller) EnqueueAfter(namespace, name string, duration time.Duration) { - if namespace == "" { - c.workqueue.AddAfter(name, duration) - } else { - c.workqueue.AddAfter(namespace+"/"+name, duration) - } -} - -func (c *Controller) enqueue(obj interface{}) { - var key string - var err error - if key, err = cache.MetaNamespaceKeyFunc(obj); err != nil { - utilruntime.HandleError(err) - return - } - c.workqueue.Add(key) -} - -func (c *Controller) handleObject(obj interface{}) { - if _, ok := obj.(metav1.Object); !ok { - tombstone, ok := obj.(cache.DeletedFinalStateUnknown) - if !ok { - utilruntime.HandleError(fmt.Errorf("error decoding object, invalid type")) - return - } - _, ok = tombstone.Obj.(metav1.Object) - if !ok { - utilruntime.HandleError(fmt.Errorf("error decoding object tombstone, invalid type")) - return - } - } - c.enqueue(obj) -} diff --git a/vendor/github.com/rancher/wrangler/pkg/generic/controllerfactory.go b/vendor/github.com/rancher/wrangler/pkg/generic/controllerfactory.go deleted file mode 100644 index 9c490ec02c6c..000000000000 --- a/vendor/github.com/rancher/wrangler/pkg/generic/controllerfactory.go +++ /dev/null @@ -1,195 +0,0 @@ -package generic - -import ( - "context" - "strings" - "sync" - "time" - - "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/client-go/tools/cache" - "k8s.io/client-go/util/workqueue" -) - -type ControllerManager struct { - lock sync.Mutex - generation int - started map[schema.GroupVersionKind]bool - controllers map[schema.GroupVersionKind]*Controller - handlers map[schema.GroupVersionKind]*Handlers -} - -func (g *ControllerManager) Controllers() map[schema.GroupVersionKind]*Controller { - return g.controllers -} - -func (g *ControllerManager) EnsureStart(ctx context.Context, gvk schema.GroupVersionKind, threadiness int) error { - g.lock.Lock() - defer g.lock.Unlock() - - return g.startController(ctx, gvk, threadiness) -} - -func (g *ControllerManager) startController(ctx context.Context, gvk schema.GroupVersionKind, threadiness int) error { - if g.started[gvk] { - return nil - } - - controller, ok := g.controllers[gvk] - if !ok { - return nil - } - - if err := controller.Run(threadiness, ctx.Done()); err != nil { - return err - } - - if g.started == nil { - g.started = map[schema.GroupVersionKind]bool{} - } - g.started[gvk] = true - - go func() { - <-ctx.Done() - g.lock.Lock() - defer g.lock.Unlock() - - delete(g.started, gvk) - delete(g.controllers, gvk) - }() - - return nil -} - -func (g *ControllerManager) Start(ctx context.Context, defaultThreadiness int, threadiness map[schema.GroupVersionKind]int) error { - g.lock.Lock() - defer g.lock.Unlock() - - for gvk := range g.controllers { - threadiness, ok := threadiness[gvk] - if !ok { - threadiness = defaultThreadiness - } - if err := g.startController(ctx, gvk, threadiness); err != nil { - return err - } - } - - return nil -} - -func (g *ControllerManager) Enqueue(gvk schema.GroupVersionKind, informer cache.SharedIndexInformer, namespace, name string) { - _, controller, _ := g.getController(gvk, informer, true) - - if namespace == "*" || name == "*" { - for _, key := range informer.GetStore().ListKeys() { - if namespace != "" && namespace != "*" && !strings.HasPrefix(key, namespace+"/") { - continue - } - if name != "*" && !nameMatches(key, name) { - continue - } - controller.workqueue.AddRateLimited(key) - } - } else { - controller.Enqueue(namespace, name) - } -} - -func nameMatches(key, name string) bool { - return key == name || strings.HasSuffix(key, "/"+name) -} - -func (g *ControllerManager) EnqueueAfter(gvk schema.GroupVersionKind, informer cache.SharedIndexInformer, namespace, name string, duration time.Duration) { - _, controller, _ := g.getController(gvk, informer, true) - controller.EnqueueAfter(namespace, name, duration) -} - -func (g *ControllerManager) removeHandler(gvk schema.GroupVersionKind, generation int) { - g.lock.Lock() - defer g.lock.Unlock() - - handlers, ok := g.handlers[gvk] - if !ok { - return - } - - var newHandlers []handlerEntry - for _, h := range handlers.handlers { - if h.generation == generation { - continue - } - newHandlers = append(newHandlers, h) - } - - handlers.handlers = newHandlers -} - -func (g *ControllerManager) getController(gvk schema.GroupVersionKind, informer cache.SharedIndexInformer, lock bool) (*Handlers, *Controller, bool) { - if lock { - g.lock.Lock() - defer g.lock.Unlock() - } - - if controller, ok := g.controllers[gvk]; ok { - return g.handlers[gvk], controller, true - } - - handlers := &Handlers{} - - queue := workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), gvk.String()) - controller := NewController(gvk, informer, queue, handlers.Handle) - - if g.handlers == nil { - g.handlers = map[schema.GroupVersionKind]*Handlers{} - } - - if g.controllers == nil { - g.controllers = map[schema.GroupVersionKind]*Controller{} - } - - g.handlers[gvk] = handlers - g.controllers[gvk] = controller - - return handlers, controller, false -} - -func (g *ControllerManager) AddHandler(ctx context.Context, gvk schema.GroupVersionKind, informer cache.SharedIndexInformer, name string, handler Handler) { - t := getHandlerTransaction(ctx) - if t == nil { - g.addHandler(ctx, gvk, informer, name, handler) - return - } - - go func() { - if t.shouldContinue() { - g.addHandler(ctx, gvk, informer, name, handler) - } - }() -} - -func (g *ControllerManager) addHandler(ctx context.Context, gvk schema.GroupVersionKind, informer cache.SharedIndexInformer, name string, handler Handler) { - g.lock.Lock() - defer g.lock.Unlock() - - g.generation++ - entry := handlerEntry{ - generation: g.generation, - name: name, - handler: handler, - } - - go func() { - <-ctx.Done() - g.removeHandler(gvk, entry.generation) - }() - - handlers, controller, ok := g.getController(gvk, informer, false) - handlers.handlers = append(handlers.handlers, entry) - - if ok { - for _, key := range controller.informer.GetStore().ListKeys() { - controller.workqueue.Add(key) - } - } -} diff --git a/vendor/github.com/rancher/wrangler/pkg/generic/factory.go b/vendor/github.com/rancher/wrangler/pkg/generic/factory.go new file mode 100644 index 000000000000..24256d0c33eb --- /dev/null +++ b/vendor/github.com/rancher/wrangler/pkg/generic/factory.go @@ -0,0 +1,120 @@ +package generic + +import ( + "context" + "sync" + "time" + + "github.com/rancher/lasso/pkg/log" + "github.com/sirupsen/logrus" + + "github.com/rancher/lasso/pkg/cache" + "github.com/rancher/lasso/pkg/client" + "github.com/rancher/lasso/pkg/controller" + "github.com/rancher/wrangler/pkg/schemes" + "k8s.io/apimachinery/pkg/runtime/schema" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/client-go/rest" +) + +func init() { + log.Infof = logrus.Infof + log.Errorf = logrus.Errorf +} + +type Factory struct { + lock sync.Mutex + cacheFactory cache.SharedCacheFactory + controllerFactory controller.SharedControllerFactory + threadiness map[schema.GroupVersionKind]int + config *rest.Config + opts FactoryOptions +} + +type FactoryOptions struct { + Namespace string + Resync time.Duration + SharedCacheFactory cache.SharedCacheFactory + SharedControllerFactory controller.SharedControllerFactory +} + +func NewFactoryFromConfigWithOptions(config *rest.Config, opts *FactoryOptions) (*Factory, error) { + if opts == nil { + opts = &FactoryOptions{} + } + + f := &Factory{ + config: config, + threadiness: map[schema.GroupVersionKind]int{}, + cacheFactory: opts.SharedCacheFactory, + controllerFactory: opts.SharedControllerFactory, + opts: *opts, + } + + if f.cacheFactory == nil && f.controllerFactory != nil { + f.cacheFactory = f.controllerFactory.SharedCacheFactory() + } + + return f, nil +} + +func (c *Factory) SetThreadiness(gvk schema.GroupVersionKind, threadiness int) { + c.threadiness[gvk] = threadiness +} + +func (c *Factory) ControllerFactory() controller.SharedControllerFactory { + err := c.setControllerFactoryWithLock() + utilruntime.Must(err) + return c.controllerFactory +} + +func (c *Factory) setControllerFactoryWithLock() error { + c.lock.Lock() + defer c.lock.Unlock() + + if c.controllerFactory != nil { + return nil + } + + cacheFactory := c.cacheFactory + if cacheFactory == nil { + client, err := client.NewSharedClientFactory(c.config, &client.SharedClientFactoryOptions{ + Scheme: schemes.All, + }) + if err != nil { + return err + } + + cacheFactory = cache.NewSharedCachedFactory(client, &cache.SharedCacheFactoryOptions{ + DefaultNamespace: c.opts.Namespace, + DefaultResync: c.opts.Resync, + }) + } + + c.cacheFactory = cacheFactory + c.controllerFactory = controller.NewSharedControllerFactory(cacheFactory, &controller.SharedControllerFactoryOptions{ + KindWorkers: c.threadiness, + }) + + return nil +} + +func (c *Factory) Sync(ctx context.Context) error { + if c.cacheFactory != nil { + c.cacheFactory.Start(ctx) + c.cacheFactory.WaitForCacheSync(ctx) + } + return nil +} + +func (c *Factory) Start(ctx context.Context, defaultThreadiness int) error { + if err := c.Sync(ctx); err != nil { + return err + } + + if c.controllerFactory != nil { + return c.controllerFactory.Start(ctx, defaultThreadiness) + } + + return nil +} diff --git a/vendor/github.com/rancher/wrangler/pkg/generic/handlers.go b/vendor/github.com/rancher/wrangler/pkg/generic/handlers.go deleted file mode 100644 index 9af89ae45e90..000000000000 --- a/vendor/github.com/rancher/wrangler/pkg/generic/handlers.go +++ /dev/null @@ -1,96 +0,0 @@ -package generic - -import ( - "fmt" - "reflect" - "strings" - - errors2 "github.com/pkg/errors" - "k8s.io/apimachinery/pkg/runtime" -) - -type handlerEntry struct { - generation int - name string - handler Handler -} - -type Handlers struct { - handlers []handlerEntry -} - -func (h *Handlers) Handle(key string, obj runtime.Object) (runtime.Object, error) { - var ( - errs errors - ) - - for _, handler := range h.handlers { - newObj, err := handler.handler(key, obj) - if err != nil && errors2.Cause(err) != ErrSkip { - errs = append(errs, &handlerError{ - HandlerName: handler.name, - Err: err, - }) - } - if newObj != nil { - obj = newObj - } - } - - return obj, errs.ToErr() -} - -type errors []error - -func (e errors) Error() string { - buf := strings.Builder{} - for _, err := range e { - if buf.Len() > 0 { - buf.WriteString(", ") - } - buf.WriteString(err.Error()) - } - return buf.String() -} - -func (e errors) ToErr() error { - switch len(e) { - case 0: - return nil - case 1: - return e[0] - default: - return e - } -} - -func (e errors) Cause() error { - if len(e) > 0 { - return e[0] - } - return nil -} - -type handlerError struct { - HandlerName string - Err error -} - -func (h handlerError) Error() string { - return fmt.Sprintf("handler %s: %v", h.HandlerName, h.Err) -} - -func (h handlerError) Cause() error { - return h.Err -} - -func ToName(h interface{}) string { - if str, ok := h.(fmt.Stringer); ok { - return str.String() - } - s := reflect.ValueOf(h).Type().String() - if len(s) > 1 && s[0] == '*' { - return s[1:] - } - return s -} diff --git a/vendor/github.com/rancher/wrangler/pkg/relatedresource/changeset.go b/vendor/github.com/rancher/wrangler/pkg/relatedresource/changeset.go index 8bb1e214ee45..5fdd05e08e58 100644 --- a/vendor/github.com/rancher/wrangler/pkg/relatedresource/changeset.go +++ b/vendor/github.com/rancher/wrangler/pkg/relatedresource/changeset.go @@ -2,6 +2,7 @@ package relatedresource import ( "context" + "time" "k8s.io/apimachinery/pkg/api/meta" @@ -23,6 +24,40 @@ func NewKey(namespace, name string) Key { } } +func FromString(key string) Key { + return NewKey(kv.RSplit(key, "/")) +} + +func OwnerResolver(namespaced bool, apiVersion, kind string) Resolver { + return func(namespace, name string, obj runtime.Object) ([]Key, error) { + if obj == nil { + return nil, nil + } + + meta, err := meta.Accessor(obj) + if err != nil { + // ignore err + return nil, nil + } + + var result []Key + for _, owner := range meta.GetOwnerReferences() { + if owner.Kind == kind && owner.APIVersion == apiVersion { + ns := "" + if namespaced { + ns = meta.GetNamespace() + } + result = append(result, Key{ + Namespace: ns, + Name: owner.Name, + }) + } + } + + return result, nil + } +} + type ControllerWrapper interface { Informer() cache.SharedIndexInformer AddGenericHandler(ctx context.Context, name string, handler generic.Handler) @@ -76,7 +111,10 @@ func watch(ctx context.Context, name string, enq Enqueuer, resolve Resolver, con return } - runResolve(meta.GetNamespace(), meta.GetName(), ro) + go func() { + time.Sleep(time.Second) + runResolve(meta.GetNamespace(), meta.GetName(), ro) + }() }, }) diff --git a/vendor/github.com/rancher/wrangler/pkg/schemas/openapi/generate.go b/vendor/github.com/rancher/wrangler/pkg/schemas/openapi/generate.go index 5f64e6632ed6..cad8ee86566d 100644 --- a/vendor/github.com/rancher/wrangler/pkg/schemas/openapi/generate.go +++ b/vendor/github.com/rancher/wrangler/pkg/schemas/openapi/generate.go @@ -117,8 +117,10 @@ func typeToProps(typeName string, schemas *types.Schemas, inflight map[string]bo } jsp.Type = "object" jsp.Nullable = true - jsp.AdditionalProperties = &v1beta1.JSONSchemaPropsOrBool{ - Schema: additionalProps, + if additionalProps.Type != "object" { + jsp.AdditionalProperties = &v1beta1.JSONSchemaPropsOrBool{ + Schema: additionalProps, + } } case "array": items, err := typeToProps(subType, schemas, inflight) diff --git a/vendor/github.com/rancher/wrangler/pkg/schemes/all.go b/vendor/github.com/rancher/wrangler/pkg/schemes/all.go index 8e64b5ca9f41..0b87075c3f17 100644 --- a/vendor/github.com/rancher/wrangler/pkg/schemes/all.go +++ b/vendor/github.com/rancher/wrangler/pkg/schemes/all.go @@ -1,7 +1,20 @@ package schemes import ( + "github.com/rancher/lasso/pkg/scheme" "k8s.io/apimachinery/pkg/runtime" ) -var All = runtime.NewScheme() +var ( + All = scheme.All + localSchemeBuilder = runtime.NewSchemeBuilder() +) + +func Register(addToScheme func(*runtime.Scheme) error) error { + localSchemeBuilder = append(localSchemeBuilder, addToScheme) + return addToScheme(All) +} + +func AddToScheme(scheme *runtime.Scheme) error { + return localSchemeBuilder.AddToScheme(scheme) +} diff --git a/vendor/github.com/spf13/cobra/.gitignore b/vendor/github.com/spf13/cobra/.gitignore index 3b053c59ec29..c7b459e4dd0f 100644 --- a/vendor/github.com/spf13/cobra/.gitignore +++ b/vendor/github.com/spf13/cobra/.gitignore @@ -32,7 +32,8 @@ Session.vim tags *.exe - cobra.test +bin -.idea/* +.idea/ +*.iml diff --git a/vendor/github.com/spf13/cobra/.travis.yml b/vendor/github.com/spf13/cobra/.travis.yml index 38b85f499ca8..a9bd4e54785c 100644 --- a/vendor/github.com/spf13/cobra/.travis.yml +++ b/vendor/github.com/spf13/cobra/.travis.yml @@ -3,29 +3,27 @@ language: go stages: - diff - test + - build go: - - 1.10.x - - 1.11.x - 1.12.x + - 1.13.x - tip +before_install: + - go get -u github.com/kyoh86/richgo + - go get -u github.com/mitchellh/gox + matrix: allow_failures: - go: tip include: - stage: diff - go: 1.12.x - script: diff -u <(echo -n) <(gofmt -d -s .) + go: 1.13.x + script: make fmt + - stage: build + go: 1.13.x + script: make cobra_generator -before_install: - - mkdir -p bin - - curl -Lso bin/shellcheck https://github.com/caarlos0/shellcheck-docker/releases/download/v0.6.0/shellcheck - - chmod +x bin/shellcheck - - go get -u github.com/kyoh86/richgo -script: - - PATH=$PATH:$PWD/bin richgo test -v ./... - - go build - - if [ -z $NOVET ]; then - diff -u <(echo -n) <(go vet . 2>&1 | grep -vE 'ExampleCommand|bash_completions.*Fprint'); - fi +script: + - make test diff --git a/vendor/github.com/spf13/cobra/Makefile b/vendor/github.com/spf13/cobra/Makefile new file mode 100644 index 000000000000..e9740d1e1752 --- /dev/null +++ b/vendor/github.com/spf13/cobra/Makefile @@ -0,0 +1,36 @@ +BIN="./bin" +SRC=$(shell find . -name "*.go") + +ifeq (, $(shell which richgo)) +$(warning "could not find richgo in $(PATH), run: go get github.com/kyoh86/richgo") +endif + +.PHONY: fmt vet test cobra_generator install_deps clean + +default: all + +all: fmt vet test cobra_generator + +fmt: + $(info ******************** checking formatting ********************) + @test -z $(shell gofmt -l $(SRC)) || (gofmt -d $(SRC); exit 1) + +test: install_deps vet + $(info ******************** running tests ********************) + richgo test -v ./... + +cobra_generator: install_deps + $(info ******************** building generator ********************) + mkdir -p $(BIN) + make -C cobra all + +install_deps: + $(info ******************** downloading dependencies ********************) + go get -v ./... + +vet: + $(info ******************** vetting ********************) + go vet ./... + +clean: + rm -rf $(BIN) diff --git a/vendor/github.com/spf13/cobra/README.md b/vendor/github.com/spf13/cobra/README.md index 60c5a425bc99..9d79934260fa 100644 --- a/vendor/github.com/spf13/cobra/README.md +++ b/vendor/github.com/spf13/cobra/README.md @@ -24,11 +24,13 @@ Many of the most widely used Go projects are built using Cobra, such as: [Prototool](https://github.com/uber/prototool), [mattermost-server](https://github.com/mattermost/mattermost-server), [Gardener](https://github.com/gardener/gardenctl), +[Linkerd](https://linkerd.io/), +[Github CLI](https://github.com/cli/cli) etc. [![Build Status](https://travis-ci.org/spf13/cobra.svg "Travis CI status")](https://travis-ci.org/spf13/cobra) -[![CircleCI status](https://circleci.com/gh/spf13/cobra.png?circle-token=:circle-token "CircleCI status")](https://circleci.com/gh/spf13/cobra) [![GoDoc](https://godoc.org/github.com/spf13/cobra?status.svg)](https://godoc.org/github.com/spf13/cobra) +[![Go Report Card](https://goreportcard.com/badge/github.com/spf13/cobra)](https://goreportcard.com/report/github.com/spf13/cobra) # Table of Contents @@ -208,51 +210,78 @@ You will additionally define flags and handle configuration in your init() funct For example cmd/root.go: ```go +package cmd + import ( - "fmt" - "os" + "fmt" + "os" - homedir "github.com/mitchellh/go-homedir" - "github.com/spf13/cobra" - "github.com/spf13/viper" + homedir "github.com/mitchellh/go-homedir" + "github.com/spf13/cobra" + "github.com/spf13/viper" ) -func init() { - cobra.OnInitialize(initConfig) - rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)") - rootCmd.PersistentFlags().StringVarP(&projectBase, "projectbase", "b", "", "base project directory eg. github.com/spf13/") - rootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "Author name for copyright attribution") - rootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "Name of license for the project (can provide `licensetext` in config)") - rootCmd.PersistentFlags().Bool("viper", true, "Use Viper for configuration") - viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) - viper.BindPFlag("projectbase", rootCmd.PersistentFlags().Lookup("projectbase")) - viper.BindPFlag("useViper", rootCmd.PersistentFlags().Lookup("viper")) - viper.SetDefault("author", "NAME HERE ") - viper.SetDefault("license", "apache") +var ( + // Used for flags. + cfgFile string + userLicense string + + rootCmd = &cobra.Command{ + Use: "cobra", + Short: "A generator for Cobra based Applications", + Long: `Cobra is a CLI library for Go that empowers applications. +This application is a tool to generate the needed files +to quickly create a Cobra application.`, + } +) + +// Execute executes the root command. +func Execute() error { + return rootCmd.Execute() } -func initConfig() { - // Don't forget to read config either from cfgFile or from home directory! - if cfgFile != "" { - // Use config file from the flag. - viper.SetConfigFile(cfgFile) - } else { - // Find home directory. - home, err := homedir.Dir() - if err != nil { - fmt.Println(err) - os.Exit(1) - } +func init() { + cobra.OnInitialize(initConfig) + + rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)") + rootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "author name for copyright attribution") + rootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "name of license for the project") + rootCmd.PersistentFlags().Bool("viper", true, "use Viper for configuration") + viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) + viper.BindPFlag("useViper", rootCmd.PersistentFlags().Lookup("viper")) + viper.SetDefault("author", "NAME HERE ") + viper.SetDefault("license", "apache") + + rootCmd.AddCommand(addCmd) + rootCmd.AddCommand(initCmd) +} - // Search config in home directory with name ".cobra" (without extension). - viper.AddConfigPath(home) - viper.SetConfigName(".cobra") - } +func er(msg interface{}) { + fmt.Println("Error:", msg) + os.Exit(1) +} - if err := viper.ReadInConfig(); err != nil { - fmt.Println("Can't read config:", err) - os.Exit(1) - } +func initConfig() { + if cfgFile != "" { + // Use config file from the flag. + viper.SetConfigFile(cfgFile) + } else { + // Find home directory. + home, err := homedir.Dir() + if err != nil { + er(err) + } + + // Search config in home directory with name ".cobra" (without extension). + viper.AddConfigPath(home) + viper.SetConfigName(".cobra") + } + + viper.AutomaticEnv() + + if err := viper.ReadInConfig(); err == nil { + fmt.Println("Using config file:", viper.ConfigFileUsed()) + } } ``` @@ -459,7 +488,7 @@ For many years people have printed back to the screen.`, Echo works a lot like print, except it has a child command.`, Args: cobra.MinimumNArgs(1), Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Print: " + strings.Join(args, " ")) + fmt.Println("Echo: " + strings.Join(args, " ")) }, } diff --git a/vendor/github.com/spf13/cobra/args.go b/vendor/github.com/spf13/cobra/args.go index c4d820b85313..70e9b262912e 100644 --- a/vendor/github.com/spf13/cobra/args.go +++ b/vendor/github.com/spf13/cobra/args.go @@ -2,6 +2,7 @@ package cobra import ( "fmt" + "strings" ) type PositionalArgs func(cmd *Command, args []string) error @@ -34,8 +35,15 @@ func NoArgs(cmd *Command, args []string) error { // OnlyValidArgs returns an error if any args are not in the list of ValidArgs. func OnlyValidArgs(cmd *Command, args []string) error { if len(cmd.ValidArgs) > 0 { + // Remove any description that may be included in ValidArgs. + // A description is following a tab character. + var validArgs []string + for _, v := range cmd.ValidArgs { + validArgs = append(validArgs, strings.Split(v, "\t")[0]) + } + for _, v := range args { - if !stringInSlice(v, cmd.ValidArgs) { + if !stringInSlice(v, validArgs) { return fmt.Errorf("invalid argument %q for %q%s", v, cmd.CommandPath(), cmd.findSuggestions(args[0])) } } diff --git a/vendor/github.com/spf13/cobra/bash_completions.go b/vendor/github.com/spf13/cobra/bash_completions.go index 57bb8e1b3fd5..1e27188c3d27 100644 --- a/vendor/github.com/spf13/cobra/bash_completions.go +++ b/vendor/github.com/spf13/cobra/bash_completions.go @@ -58,9 +58,71 @@ __%[1]s_contains_word() return 1 } +__%[1]s_handle_go_custom_completion() +{ + __%[1]s_debug "${FUNCNAME[0]}: cur is ${cur}, words[*] is ${words[*]}, #words[@] is ${#words[@]}" + + local out requestComp lastParam lastChar comp directive args + + # Prepare the command to request completions for the program. + # Calling ${words[0]} instead of directly %[1]s allows to handle aliases + args=("${words[@]:1}") + requestComp="${words[0]} %[2]s ${args[*]}" + + lastParam=${words[$((${#words[@]}-1))]} + lastChar=${lastParam:$((${#lastParam}-1)):1} + __%[1]s_debug "${FUNCNAME[0]}: lastParam ${lastParam}, lastChar ${lastChar}" + + if [ -z "${cur}" ] && [ "${lastChar}" != "=" ]; then + # If the last parameter is complete (there is a space following it) + # We add an extra empty parameter so we can indicate this to the go method. + __%[1]s_debug "${FUNCNAME[0]}: Adding extra empty parameter" + requestComp="${requestComp} \"\"" + fi + + __%[1]s_debug "${FUNCNAME[0]}: calling ${requestComp}" + # Use eval to handle any environment variables and such + out=$(eval "${requestComp}" 2>/dev/null) + + # Extract the directive integer at the very end of the output following a colon (:) + directive=${out##*:} + # Remove the directive + out=${out%%:*} + if [ "${directive}" = "${out}" ]; then + # There is not directive specified + directive=0 + fi + __%[1]s_debug "${FUNCNAME[0]}: the completion directive is: ${directive}" + __%[1]s_debug "${FUNCNAME[0]}: the completions are: ${out[*]}" + + if [ $((directive & %[3]d)) -ne 0 ]; then + # Error code. No completion. + __%[1]s_debug "${FUNCNAME[0]}: received error from custom completion go code" + return + else + if [ $((directive & %[4]d)) -ne 0 ]; then + if [[ $(type -t compopt) = "builtin" ]]; then + __%[1]s_debug "${FUNCNAME[0]}: activating no space" + compopt -o nospace + fi + fi + if [ $((directive & %[5]d)) -ne 0 ]; then + if [[ $(type -t compopt) = "builtin" ]]; then + __%[1]s_debug "${FUNCNAME[0]}: activating no file completion" + compopt +o default + fi + fi + + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${out[*]}" -- "$cur") + fi +} + __%[1]s_handle_reply() { __%[1]s_debug "${FUNCNAME[0]}" + local comp case $cur in -*) if [[ $(type -t compopt) = "builtin" ]]; then @@ -72,7 +134,9 @@ __%[1]s_handle_reply() else allflags=("${flags[*]} ${two_word_flags[*]}") fi - COMPREPLY=( $(compgen -W "${allflags[*]}" -- "$cur") ) + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${allflags[*]}" -- "$cur") if [[ $(type -t compopt) = "builtin" ]]; then [[ "${COMPREPLY[0]}" == *= ]] || compopt +o nospace fi @@ -118,14 +182,22 @@ __%[1]s_handle_reply() completions=("${commands[@]}") if [[ ${#must_have_one_noun[@]} -ne 0 ]]; then completions=("${must_have_one_noun[@]}") + elif [[ -n "${has_completion_function}" ]]; then + # if a go completion function is provided, defer to that function + completions=() + __%[1]s_handle_go_custom_completion fi if [[ ${#must_have_one_flag[@]} -ne 0 ]]; then completions+=("${must_have_one_flag[@]}") fi - COMPREPLY=( $(compgen -W "${completions[*]}" -- "$cur") ) + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${completions[*]}" -- "$cur") if [[ ${#COMPREPLY[@]} -eq 0 && ${#noun_aliases[@]} -gt 0 && ${#must_have_one_noun[@]} -ne 0 ]]; then - COMPREPLY=( $(compgen -W "${noun_aliases[*]}" -- "$cur") ) + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${noun_aliases[*]}" -- "$cur") fi if [[ ${#COMPREPLY[@]} -eq 0 ]]; then @@ -160,7 +232,7 @@ __%[1]s_handle_filename_extension_flag() __%[1]s_handle_subdirs_in_dir_flag() { local dir="$1" - pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 + pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 || return } __%[1]s_handle_flag() @@ -272,7 +344,7 @@ __%[1]s_handle_word() __%[1]s_handle_word } -`, name)) +`, name, ShellCompNoDescRequestCmd, ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp)) } func writePostscript(buf *bytes.Buffer, name string) { @@ -297,6 +369,7 @@ func writePostscript(buf *bytes.Buffer, name string) { local commands=("%[1]s") local must_have_one_flag=() local must_have_one_noun=() + local has_completion_function local last_command local nouns=() @@ -397,7 +470,22 @@ func writeLocalNonPersistentFlag(buf *bytes.Buffer, flag *pflag.Flag) { buf.WriteString(fmt.Sprintf(format, name)) } +// Setup annotations for go completions for registered flags +func prepareCustomAnnotationsForFlags(cmd *Command) { + for flag := range flagCompletionFunctions { + // Make sure the completion script calls the __*_go_custom_completion function for + // every registered flag. We need to do this here (and not when the flag was registered + // for completion) so that we can know the root command name for the prefix + // of ___go_custom_completion + if flag.Annotations == nil { + flag.Annotations = map[string][]string{} + } + flag.Annotations[BashCompCustom] = []string{fmt.Sprintf("__%[1]s_handle_go_custom_completion", cmd.Root().Name())} + } +} + func writeFlags(buf *bytes.Buffer, cmd *Command) { + prepareCustomAnnotationsForFlags(cmd) buf.WriteString(` flags=() two_word_flags=() local_nonpersistent_flags=() @@ -460,8 +548,14 @@ func writeRequiredNouns(buf *bytes.Buffer, cmd *Command) { buf.WriteString(" must_have_one_noun=()\n") sort.Sort(sort.StringSlice(cmd.ValidArgs)) for _, value := range cmd.ValidArgs { + // Remove any description that may be included following a tab character. + // Descriptions are not supported by bash completion. + value = strings.Split(value, "\t")[0] buf.WriteString(fmt.Sprintf(" must_have_one_noun+=(%q)\n", value)) } + if cmd.ValidArgsFunction != nil { + buf.WriteString(" has_completion_function=1\n") + } } func writeCmdAliases(buf *bytes.Buffer, cmd *Command) { diff --git a/vendor/github.com/spf13/cobra/bash_completions.md b/vendor/github.com/spf13/cobra/bash_completions.md index 4ac61ee132a4..e61a3a6546b2 100644 --- a/vendor/github.com/spf13/cobra/bash_completions.md +++ b/vendor/github.com/spf13/cobra/bash_completions.md @@ -56,7 +56,149 @@ func main() { `out.sh` will get you completions of subcommands and flags. Copy it to `/etc/bash_completion.d/` as described [here](https://debian-administration.org/article/316/An_introduction_to_bash_completion_part_1) and reset your terminal to use autocompletion. If you make additional annotations to your code, you can get even more intelligent and flexible behavior. -## Creating your own custom functions +## Have the completions code complete your 'nouns' + +### Static completion of nouns + +This method allows you to provide a pre-defined list of completion choices for your nouns using the `validArgs` field. +For example, if you want `kubectl get [tab][tab]` to show a list of valid "nouns" you have to set them. Simplified code from `kubectl get` looks like: + +```go +validArgs []string = { "pod", "node", "service", "replicationcontroller" } + +cmd := &cobra.Command{ + Use: "get [(-o|--output=)json|yaml|template|...] (RESOURCE [NAME] | RESOURCE/NAME ...)", + Short: "Display one or many resources", + Long: get_long, + Example: get_example, + Run: func(cmd *cobra.Command, args []string) { + err := RunGet(f, out, cmd, args) + util.CheckErr(err) + }, + ValidArgs: validArgs, +} +``` + +Notice we put the "ValidArgs" on the "get" subcommand. Doing so will give results like + +```bash +# kubectl get [tab][tab] +node pod replicationcontroller service +``` + +### Plural form and shortcuts for nouns + +If your nouns have a number of aliases, you can define them alongside `ValidArgs` using `ArgAliases`: + +```go +argAliases []string = { "pods", "nodes", "services", "svc", "replicationcontrollers", "rc" } + +cmd := &cobra.Command{ + ... + ValidArgs: validArgs, + ArgAliases: argAliases +} +``` + +The aliases are not shown to the user on tab completion, but they are accepted as valid nouns by +the completion algorithm if entered manually, e.g. in: + +```bash +# kubectl get rc [tab][tab] +backend frontend database +``` + +Note that without declaring `rc` as an alias, the completion algorithm would show the list of nouns +in this example again instead of the replication controllers. + +### Dynamic completion of nouns + +In some cases it is not possible to provide a list of possible completions in advance. Instead, the list of completions must be determined at execution-time. Cobra provides two ways of defining such dynamic completion of nouns. Note that both these methods can be used along-side each other as long as they are not both used for the same command. + +**Note**: *Custom Completions written in Go* will automatically work for other shell-completion scripts (e.g., Fish shell), while *Custom Completions written in Bash* will only work for Bash shell-completion. It is therefore recommended to use *Custom Completions written in Go*. + +#### 1. Custom completions of nouns written in Go + +In a similar fashion as for static completions, you can use the `ValidArgsFunction` field to provide a Go function that Cobra will execute when it needs the list of completion choices for the nouns of a command. Note that either `ValidArgs` or `ValidArgsFunction` can be used for a single cobra command, but not both. +Simplified code from `helm status` looks like: + +```go +cmd := &cobra.Command{ + Use: "status RELEASE_NAME", + Short: "Display the status of the named release", + Long: status_long, + RunE: func(cmd *cobra.Command, args []string) { + RunGet(args[0]) + }, + ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + if len(args) != 0 { + return nil, cobra.ShellCompDirectiveNoFileComp + } + return getReleasesFromCluster(toComplete), cobra.ShellCompDirectiveNoFileComp + }, +} +``` +Where `getReleasesFromCluster()` is a Go function that obtains the list of current Helm releases running on the Kubernetes cluster. +Notice we put the `ValidArgsFunction` on the `status` subcommand. Let's assume the Helm releases on the cluster are: `harbor`, `notary`, `rook` and `thanos` then this dynamic completion will give results like + +```bash +# helm status [tab][tab] +harbor notary rook thanos +``` +You may have noticed the use of `cobra.ShellCompDirective`. These directives are bit fields allowing to control some shell completion behaviors for your particular completion. You can combine them with the bit-or operator such as `cobra.ShellCompDirectiveNoSpace | cobra.ShellCompDirectiveNoFileComp` +```go +// Indicates an error occurred and completions should be ignored. +ShellCompDirectiveError +// Indicates that the shell should not add a space after the completion, +// even if there is a single completion provided. +ShellCompDirectiveNoSpace +// Indicates that the shell should not provide file completion even when +// no completion is provided. +// This currently does not work for zsh or bash < 4 +ShellCompDirectiveNoFileComp +// Indicates that the shell will perform its default behavior after completions +// have been provided (this implies !ShellCompDirectiveNoSpace && !ShellCompDirectiveNoFileComp). +ShellCompDirectiveDefault +``` + +When using the `ValidArgsFunction`, Cobra will call your registered function after having parsed all flags and arguments provided in the command-line. You therefore don't need to do this parsing yourself. For example, when a user calls `helm status --namespace my-rook-ns [tab][tab]`, Cobra will call your registered `ValidArgsFunction` after having parsed the `--namespace` flag, as it would have done when calling the `RunE` function. + +##### Debugging + +Cobra achieves dynamic completions written in Go through the use of a hidden command called by the completion script. To debug your Go completion code, you can call this hidden command directly: +```bash +# helm __complete status har +harbor +:4 +Completion ended with directive: ShellCompDirectiveNoFileComp # This is on stderr +``` +***Important:*** If the noun to complete is empty, you must pass an empty parameter to the `__complete` command: +```bash +# helm __complete status "" +harbor +notary +rook +thanos +:4 +Completion ended with directive: ShellCompDirectiveNoFileComp # This is on stderr +``` +Calling the `__complete` command directly allows you to run the Go debugger to troubleshoot your code. You can also add printouts to your code; Cobra provides the following functions to use for printouts in Go completion code: +```go +// Prints to the completion script debug file (if BASH_COMP_DEBUG_FILE +// is set to a file path) and optionally prints to stderr. +cobra.CompDebug(msg string, printToStdErr bool) { +cobra.CompDebugln(msg string, printToStdErr bool) + +// Prints to the completion script debug file (if BASH_COMP_DEBUG_FILE +// is set to a file path) and to stderr. +cobra.CompError(msg string) +cobra.CompErrorln(msg string) +``` +***Important:*** You should **not** leave traces that print to stdout in your completion code as they will be interpreted as completion choices by the completion script. Instead, use the cobra-provided debugging traces functions mentioned above. + +#### 2. Custom completions of nouns written in Bash + +This method allows you to inject bash functions into the completion script. Those bash functions are responsible for providing the completion choices for your own completions. Some more actual code that works in kubernetes: @@ -111,58 +253,6 @@ Find more information at https://github.com/GoogleCloudPlatform/kubernetes.`, The `BashCompletionFunction` option is really only valid/useful on the root command. Doing the above will cause `__kubectl_custom_func()` (`___custom_func()`) to be called when the built in processor was unable to find a solution. In the case of kubernetes a valid command might look something like `kubectl get pod [mypod]`. If you type `kubectl get pod [tab][tab]` the `__kubectl_customc_func()` will run because the cobra.Command only understood "kubectl" and "get." `__kubectl_custom_func()` will see that the cobra.Command is "kubectl_get" and will thus call another helper `__kubectl_get_resource()`. `__kubectl_get_resource` will look at the 'nouns' collected. In our example the only noun will be `pod`. So it will call `__kubectl_parse_get pod`. `__kubectl_parse_get` will actually call out to kubernetes and get any pods. It will then set `COMPREPLY` to valid pods! -## Have the completions code complete your 'nouns' - -In the above example "pod" was assumed to already be typed. But if you want `kubectl get [tab][tab]` to show a list of valid "nouns" you have to set them. Simplified code from `kubectl get` looks like: - -```go -validArgs []string = { "pod", "node", "service", "replicationcontroller" } - -cmd := &cobra.Command{ - Use: "get [(-o|--output=)json|yaml|template|...] (RESOURCE [NAME] | RESOURCE/NAME ...)", - Short: "Display one or many resources", - Long: get_long, - Example: get_example, - Run: func(cmd *cobra.Command, args []string) { - err := RunGet(f, out, cmd, args) - util.CheckErr(err) - }, - ValidArgs: validArgs, -} -``` - -Notice we put the "ValidArgs" on the "get" subcommand. Doing so will give results like - -```bash -# kubectl get [tab][tab] -node pod replicationcontroller service -``` - -## Plural form and shortcuts for nouns - -If your nouns have a number of aliases, you can define them alongside `ValidArgs` using `ArgAliases`: - -```go -argAliases []string = { "pods", "nodes", "services", "svc", "replicationcontrollers", "rc" } - -cmd := &cobra.Command{ - ... - ValidArgs: validArgs, - ArgAliases: argAliases -} -``` - -The aliases are not shown to the user on tab completion, but they are accepted as valid nouns by -the completion algorithm if entered manually, e.g. in: - -```bash -# kubectl get rc [tab][tab] -backend frontend database -``` - -Note that without declaring `rc` as an alias, the completion algorithm would show the list of nouns -in this example again instead of the replication controllers. - ## Mark flags as required Most of the time completions will only show subcommands. But if a flag is required to make a subcommand work, you probably want it to show up when the user types [tab][tab]. Marking a flag as 'Required' is incredibly easy. @@ -211,8 +301,45 @@ So while there are many other files in the CWD it only shows me subdirs and thos # Specify custom flag completion -Similar to the filename completion and filtering using cobra.BashCompFilenameExt, you can specify -a custom flag completion function with cobra.BashCompCustom: +As for nouns, Cobra provides two ways of defining dynamic completion of flags. Note that both these methods can be used along-side each other as long as they are not both used for the same flag. + +**Note**: *Custom Completions written in Go* will automatically work for other shell-completion scripts (e.g., Fish shell), while *Custom Completions written in Bash* will only work for Bash shell-completion. It is therefore recommended to use *Custom Completions written in Go*. + +## 1. Custom completions of flags written in Go + +To provide a Go function that Cobra will execute when it needs the list of completion choices for a flag, you must register the function in the following manner: + +```go +flagName := "output" +cmd.RegisterFlagCompletionFunc(flagName, func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + return []string{"json", "table", "yaml"}, cobra.ShellCompDirectiveDefault +}) +``` +Notice that calling `RegisterFlagCompletionFunc()` is done through the `command` with which the flag is associated. In our example this dynamic completion will give results like so: + +```bash +# helm status --output [tab][tab] +json table yaml +``` + +### Debugging + +You can also easily debug your Go completion code for flags: +```bash +# helm __complete status --output "" +json +table +yaml +:4 +Completion ended with directive: ShellCompDirectiveNoFileComp # This is on stderr +``` +***Important:*** You should **not** leave traces that print to stdout in your completion code as they will be interpreted as completion choices by the completion script. Instead, use the cobra-provided debugging traces functions mentioned in the above section. + +## 2. Custom completions of flags written in Bash + +Alternatively, you can use bash code for flag custom completion. Similar to the filename +completion and filtering using `cobra.BashCompFilenameExt`, you can specify +a custom flag completion bash function with `cobra.BashCompCustom`: ```go annotation := make(map[string][]string) @@ -226,7 +353,7 @@ a custom flag completion function with cobra.BashCompCustom: cmd.Flags().AddFlag(flag) ``` -In addition add the `__handle_namespace_flag` implementation in the `BashCompletionFunction` +In addition add the `__kubectl_get_namespaces` implementation in the `BashCompletionFunction` value, e.g.: ```bash diff --git a/vendor/github.com/spf13/cobra/cobra.go b/vendor/github.com/spf13/cobra/cobra.go index 6505c070b403..d01becc8fa6c 100644 --- a/vendor/github.com/spf13/cobra/cobra.go +++ b/vendor/github.com/spf13/cobra/cobra.go @@ -52,7 +52,7 @@ var EnableCommandSorting = true // if the CLI is started from explorer.exe. // To disable the mousetrap, just set this variable to blank string (""). // Works only on Microsoft Windows. -var MousetrapHelpText string = `This is a command line tool. +var MousetrapHelpText = `This is a command line tool. You need to open cmd.exe and run it from there. ` @@ -61,7 +61,7 @@ You need to open cmd.exe and run it from there. // if the CLI is started from explorer.exe. Set to 0 to wait for the return key to be pressed. // To disable the mousetrap, just set MousetrapHelpText to blank string (""). // Works only on Microsoft Windows. -var MousetrapDisplayDuration time.Duration = 5 * time.Second +var MousetrapDisplayDuration = 5 * time.Second // AddTemplateFunc adds a template function that's available to Usage and Help // template generation. diff --git a/vendor/github.com/spf13/cobra/command.go b/vendor/github.com/spf13/cobra/command.go index c7e898303432..88e6ed77d0e3 100644 --- a/vendor/github.com/spf13/cobra/command.go +++ b/vendor/github.com/spf13/cobra/command.go @@ -17,6 +17,7 @@ package cobra import ( "bytes" + "context" "fmt" "io" "os" @@ -56,6 +57,10 @@ type Command struct { // ValidArgs is list of all valid non-flag arguments that are accepted in bash completions ValidArgs []string + // ValidArgsFunction is an optional function that provides valid non-flag arguments for bash completion. + // It is a dynamic version of using ValidArgs. + // Only one of ValidArgs and ValidArgsFunction can be used for a command. + ValidArgsFunction func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) // Expected arguments Args PositionalArgs @@ -80,7 +85,8 @@ type Command struct { // Version defines the version for this command. If this value is non-empty and the command does not // define a "version" flag, a "version" boolean flag will be added to the command and, if specified, - // will print content of the "Version" variable. + // will print content of the "Version" variable. A shorthand "v" flag will also be added if the + // command does not define one. Version string // The *Run functions are executed in the following order: @@ -140,9 +146,11 @@ type Command struct { // TraverseChildren parses flags on all parents before executing child command. TraverseChildren bool - //FParseErrWhitelist flag parse errors to be ignored + // FParseErrWhitelist flag parse errors to be ignored FParseErrWhitelist FParseErrWhitelist + ctx context.Context + // commands is the list of commands supported by this program. commands []*Command // parent is a parent command for this command. @@ -202,6 +210,12 @@ type Command struct { errWriter io.Writer } +// Context returns underlying command context. If command wasn't +// executed with ExecuteContext Context returns Background context. +func (c *Command) Context() context.Context { + return c.ctx +} + // SetArgs sets arguments for the command. It is set to os.Args[1:] by default, if desired, can be overridden // particularly useful when testing. func (c *Command) SetArgs(a []string) { @@ -228,7 +242,7 @@ func (c *Command) SetErr(newErr io.Writer) { c.errWriter = newErr } -// SetOut sets the source for input data +// SetIn sets the source for input data // If newIn is nil, os.Stdin is used. func (c *Command) SetIn(newIn io.Reader) { c.inReader = newIn @@ -297,7 +311,7 @@ func (c *Command) ErrOrStderr() io.Writer { return c.getErr(os.Stderr) } -// ErrOrStderr returns output to stderr +// InOrStdin returns input to stdin func (c *Command) InOrStdin() io.Reader { return c.getIn(os.Stdin) } @@ -369,6 +383,8 @@ func (c *Command) HelpFunc() func(*Command, []string) { } return func(c *Command, a []string) { c.mergePersistentFlags() + // The help should be sent to stdout + // See https://github.com/spf13/cobra/issues/1002 err := tmpl(c.OutOrStdout(), c.HelpTemplate(), c) if err != nil { c.Println(err) @@ -857,6 +873,13 @@ func (c *Command) preRun() { } } +// ExecuteContext is the same as Execute(), but sets the ctx on the command. +// Retrieve ctx by calling cmd.Context() inside your *Run lifecycle functions. +func (c *Command) ExecuteContext(ctx context.Context) error { + c.ctx = ctx + return c.Execute() +} + // Execute uses the args (os.Args[1:] by default) // and run through the command tree finding appropriate matches // for commands and then corresponding flags. @@ -867,6 +890,10 @@ func (c *Command) Execute() error { // ExecuteC executes the command. func (c *Command) ExecuteC() (cmd *Command, err error) { + if c.ctx == nil { + c.ctx = context.Background() + } + // Regardless of what command execute is called on, run on Root only if c.HasParent() { return c.Root().ExecuteC() @@ -888,6 +915,9 @@ func (c *Command) ExecuteC() (cmd *Command, err error) { args = os.Args[1:] } + // initialize the hidden command to be used for bash completion + c.initCompleteCmd(args) + var flags []string if c.TraverseChildren { cmd, flags, err = c.Traverse(args) @@ -911,6 +941,12 @@ func (c *Command) ExecuteC() (cmd *Command, err error) { cmd.commandCalledAs.name = cmd.Name() } + // We have to pass global context to children command + // if context is present on the parent command. + if cmd.ctx == nil { + cmd.ctx = c.ctx + } + err = cmd.execute(flags) if err != nil { // Always show help if requested, even if SilenceErrors is in @@ -994,7 +1030,11 @@ func (c *Command) InitDefaultVersionFlag() { } else { usage += c.Name() } - c.Flags().Bool("version", false, usage) + if c.Flags().ShorthandLookup("v") == nil { + c.Flags().BoolP("version", "v", false, usage) + } else { + c.Flags().Bool("version", false, usage) + } } } @@ -1547,7 +1587,7 @@ func (c *Command) ParseFlags(args []string) error { beforeErrorBufLen := c.flagErrorBuf.Len() c.mergePersistentFlags() - //do it here after merging all flags and just before parse + // do it here after merging all flags and just before parse c.Flags().ParseErrorsWhitelist = flag.ParseErrorsWhitelist(c.FParseErrWhitelist) err := c.Flags().Parse(args) diff --git a/vendor/github.com/spf13/cobra/custom_completions.go b/vendor/github.com/spf13/cobra/custom_completions.go new file mode 100644 index 000000000000..ba57327c153f --- /dev/null +++ b/vendor/github.com/spf13/cobra/custom_completions.go @@ -0,0 +1,384 @@ +package cobra + +import ( + "errors" + "fmt" + "os" + "strings" + + "github.com/spf13/pflag" +) + +const ( + // ShellCompRequestCmd is the name of the hidden command that is used to request + // completion results from the program. It is used by the shell completion scripts. + ShellCompRequestCmd = "__complete" + // ShellCompNoDescRequestCmd is the name of the hidden command that is used to request + // completion results without their description. It is used by the shell completion scripts. + ShellCompNoDescRequestCmd = "__completeNoDesc" +) + +// Global map of flag completion functions. +var flagCompletionFunctions = map[*pflag.Flag]func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective){} + +// ShellCompDirective is a bit map representing the different behaviors the shell +// can be instructed to have once completions have been provided. +type ShellCompDirective int + +const ( + // ShellCompDirectiveError indicates an error occurred and completions should be ignored. + ShellCompDirectiveError ShellCompDirective = 1 << iota + + // ShellCompDirectiveNoSpace indicates that the shell should not add a space + // after the completion even if there is a single completion provided. + ShellCompDirectiveNoSpace + + // ShellCompDirectiveNoFileComp indicates that the shell should not provide + // file completion even when no completion is provided. + // This currently does not work for zsh or bash < 4 + ShellCompDirectiveNoFileComp + + // ShellCompDirectiveDefault indicates to let the shell perform its default + // behavior after completions have been provided. + ShellCompDirectiveDefault ShellCompDirective = 0 +) + +// RegisterFlagCompletionFunc should be called to register a function to provide completion for a flag. +func (c *Command) RegisterFlagCompletionFunc(flagName string, f func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective)) error { + flag := c.Flag(flagName) + if flag == nil { + return fmt.Errorf("RegisterFlagCompletionFunc: flag '%s' does not exist", flagName) + } + if _, exists := flagCompletionFunctions[flag]; exists { + return fmt.Errorf("RegisterFlagCompletionFunc: flag '%s' already registered", flagName) + } + flagCompletionFunctions[flag] = f + return nil +} + +// Returns a string listing the different directive enabled in the specified parameter +func (d ShellCompDirective) string() string { + var directives []string + if d&ShellCompDirectiveError != 0 { + directives = append(directives, "ShellCompDirectiveError") + } + if d&ShellCompDirectiveNoSpace != 0 { + directives = append(directives, "ShellCompDirectiveNoSpace") + } + if d&ShellCompDirectiveNoFileComp != 0 { + directives = append(directives, "ShellCompDirectiveNoFileComp") + } + if len(directives) == 0 { + directives = append(directives, "ShellCompDirectiveDefault") + } + + if d > ShellCompDirectiveError+ShellCompDirectiveNoSpace+ShellCompDirectiveNoFileComp { + return fmt.Sprintf("ERROR: unexpected ShellCompDirective value: %d", d) + } + return strings.Join(directives, ", ") +} + +// Adds a special hidden command that can be used to request custom completions. +func (c *Command) initCompleteCmd(args []string) { + completeCmd := &Command{ + Use: fmt.Sprintf("%s [command-line]", ShellCompRequestCmd), + Aliases: []string{ShellCompNoDescRequestCmd}, + DisableFlagsInUseLine: true, + Hidden: true, + DisableFlagParsing: true, + Args: MinimumNArgs(1), + Short: "Request shell completion choices for the specified command-line", + Long: fmt.Sprintf("%[2]s is a special command that is used by the shell completion logic\n%[1]s", + "to request completion choices for the specified command-line.", ShellCompRequestCmd), + Run: func(cmd *Command, args []string) { + finalCmd, completions, directive, err := cmd.getCompletions(args) + if err != nil { + CompErrorln(err.Error()) + // Keep going for multiple reasons: + // 1- There could be some valid completions even though there was an error + // 2- Even without completions, we need to print the directive + } + + noDescriptions := (cmd.CalledAs() == ShellCompNoDescRequestCmd) + for _, comp := range completions { + if noDescriptions { + // Remove any description that may be included following a tab character. + comp = strings.Split(comp, "\t")[0] + } + // Print each possible completion to stdout for the completion script to consume. + fmt.Fprintln(finalCmd.OutOrStdout(), comp) + } + + if directive > ShellCompDirectiveError+ShellCompDirectiveNoSpace+ShellCompDirectiveNoFileComp { + directive = ShellCompDirectiveDefault + } + + // As the last printout, print the completion directive for the completion script to parse. + // The directive integer must be that last character following a single colon (:). + // The completion script expects : + fmt.Fprintf(finalCmd.OutOrStdout(), ":%d\n", directive) + + // Print some helpful info to stderr for the user to understand. + // Output from stderr must be ignored by the completion script. + fmt.Fprintf(finalCmd.ErrOrStderr(), "Completion ended with directive: %s\n", directive.string()) + }, + } + c.AddCommand(completeCmd) + subCmd, _, err := c.Find(args) + if err != nil || subCmd.Name() != ShellCompRequestCmd { + // Only create this special command if it is actually being called. + // This reduces possible side-effects of creating such a command; + // for example, having this command would cause problems to a + // cobra program that only consists of the root command, since this + // command would cause the root command to suddenly have a subcommand. + c.RemoveCommand(completeCmd) + } +} + +func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDirective, error) { + var completions []string + + // The last argument, which is not completely typed by the user, + // should not be part of the list of arguments + toComplete := args[len(args)-1] + trimmedArgs := args[:len(args)-1] + + // Find the real command for which completion must be performed + finalCmd, finalArgs, err := c.Root().Find(trimmedArgs) + if err != nil { + // Unable to find the real command. E.g., someInvalidCmd + return c, completions, ShellCompDirectiveDefault, fmt.Errorf("Unable to find a command for arguments: %v", trimmedArgs) + } + + // When doing completion of a flag name, as soon as an argument starts with + // a '-' we know it is a flag. We cannot use isFlagArg() here as it requires + // the flag to be complete + if len(toComplete) > 0 && toComplete[0] == '-' && !strings.Contains(toComplete, "=") { + // We are completing a flag name + finalCmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { + completions = append(completions, getFlagNameCompletions(flag, toComplete)...) + }) + finalCmd.InheritedFlags().VisitAll(func(flag *pflag.Flag) { + completions = append(completions, getFlagNameCompletions(flag, toComplete)...) + }) + + directive := ShellCompDirectiveDefault + if len(completions) > 0 { + if strings.HasSuffix(completions[0], "=") { + directive = ShellCompDirectiveNoSpace + } + } + return finalCmd, completions, directive, nil + } + + var flag *pflag.Flag + if !finalCmd.DisableFlagParsing { + // We only do flag completion if we are allowed to parse flags + // This is important for commands which have requested to do their own flag completion. + flag, finalArgs, toComplete, err = checkIfFlagCompletion(finalCmd, finalArgs, toComplete) + if err != nil { + // Error while attempting to parse flags + return finalCmd, completions, ShellCompDirectiveDefault, err + } + } + + if flag == nil { + // Complete subcommand names + for _, subCmd := range finalCmd.Commands() { + if subCmd.IsAvailableCommand() && strings.HasPrefix(subCmd.Name(), toComplete) { + completions = append(completions, fmt.Sprintf("%s\t%s", subCmd.Name(), subCmd.Short)) + } + } + + if len(finalCmd.ValidArgs) > 0 { + // Always complete ValidArgs, even if we are completing a subcommand name. + // This is for commands that have both subcommands and ValidArgs. + for _, validArg := range finalCmd.ValidArgs { + if strings.HasPrefix(validArg, toComplete) { + completions = append(completions, validArg) + } + } + + // If there are ValidArgs specified (even if they don't match), we stop completion. + // Only one of ValidArgs or ValidArgsFunction can be used for a single command. + return finalCmd, completions, ShellCompDirectiveNoFileComp, nil + } + + // Always let the logic continue so as to add any ValidArgsFunction completions, + // even if we already found sub-commands. + // This is for commands that have subcommands but also specify a ValidArgsFunction. + } + + // Parse the flags and extract the arguments to prepare for calling the completion function + if err = finalCmd.ParseFlags(finalArgs); err != nil { + return finalCmd, completions, ShellCompDirectiveDefault, fmt.Errorf("Error while parsing flags from args %v: %s", finalArgs, err.Error()) + } + + // We only remove the flags from the arguments if DisableFlagParsing is not set. + // This is important for commands which have requested to do their own flag completion. + if !finalCmd.DisableFlagParsing { + finalArgs = finalCmd.Flags().Args() + } + + // Find the completion function for the flag or command + var completionFn func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) + if flag != nil { + completionFn = flagCompletionFunctions[flag] + } else { + completionFn = finalCmd.ValidArgsFunction + } + if completionFn == nil { + // Go custom completion not supported/needed for this flag or command + return finalCmd, completions, ShellCompDirectiveDefault, nil + } + + // Call the registered completion function to get the completions + comps, directive := completionFn(finalCmd, finalArgs, toComplete) + completions = append(completions, comps...) + return finalCmd, completions, directive, nil +} + +func getFlagNameCompletions(flag *pflag.Flag, toComplete string) []string { + if nonCompletableFlag(flag) { + return []string{} + } + + var completions []string + flagName := "--" + flag.Name + if strings.HasPrefix(flagName, toComplete) { + // Flag without the = + completions = append(completions, fmt.Sprintf("%s\t%s", flagName, flag.Usage)) + + if len(flag.NoOptDefVal) == 0 { + // Flag requires a value, so it can be suffixed with = + flagName += "=" + completions = append(completions, fmt.Sprintf("%s\t%s", flagName, flag.Usage)) + } + } + + flagName = "-" + flag.Shorthand + if len(flag.Shorthand) > 0 && strings.HasPrefix(flagName, toComplete) { + completions = append(completions, fmt.Sprintf("%s\t%s", flagName, flag.Usage)) + } + + return completions +} + +func checkIfFlagCompletion(finalCmd *Command, args []string, lastArg string) (*pflag.Flag, []string, string, error) { + var flagName string + trimmedArgs := args + flagWithEqual := false + if isFlagArg(lastArg) { + if index := strings.Index(lastArg, "="); index >= 0 { + flagName = strings.TrimLeft(lastArg[:index], "-") + lastArg = lastArg[index+1:] + flagWithEqual = true + } else { + return nil, nil, "", errors.New("Unexpected completion request for flag") + } + } + + if len(flagName) == 0 { + if len(args) > 0 { + prevArg := args[len(args)-1] + if isFlagArg(prevArg) { + // Only consider the case where the flag does not contain an =. + // If the flag contains an = it means it has already been fully processed, + // so we don't need to deal with it here. + if index := strings.Index(prevArg, "="); index < 0 { + flagName = strings.TrimLeft(prevArg, "-") + + // Remove the uncompleted flag or else there could be an error created + // for an invalid value for that flag + trimmedArgs = args[:len(args)-1] + } + } + } + } + + if len(flagName) == 0 { + // Not doing flag completion + return nil, trimmedArgs, lastArg, nil + } + + flag := findFlag(finalCmd, flagName) + if flag == nil { + // Flag not supported by this command, nothing to complete + err := fmt.Errorf("Subcommand '%s' does not support flag '%s'", finalCmd.Name(), flagName) + return nil, nil, "", err + } + + if !flagWithEqual { + if len(flag.NoOptDefVal) != 0 { + // We had assumed dealing with a two-word flag but the flag is a boolean flag. + // In that case, there is no value following it, so we are not really doing flag completion. + // Reset everything to do noun completion. + trimmedArgs = args + flag = nil + } + } + + return flag, trimmedArgs, lastArg, nil +} + +func findFlag(cmd *Command, name string) *pflag.Flag { + flagSet := cmd.Flags() + if len(name) == 1 { + // First convert the short flag into a long flag + // as the cmd.Flag() search only accepts long flags + if short := flagSet.ShorthandLookup(name); short != nil { + name = short.Name + } else { + set := cmd.InheritedFlags() + if short = set.ShorthandLookup(name); short != nil { + name = short.Name + } else { + return nil + } + } + } + return cmd.Flag(name) +} + +// CompDebug prints the specified string to the same file as where the +// completion script prints its logs. +// Note that completion printouts should never be on stdout as they would +// be wrongly interpreted as actual completion choices by the completion script. +func CompDebug(msg string, printToStdErr bool) { + msg = fmt.Sprintf("[Debug] %s", msg) + + // Such logs are only printed when the user has set the environment + // variable BASH_COMP_DEBUG_FILE to the path of some file to be used. + if path := os.Getenv("BASH_COMP_DEBUG_FILE"); path != "" { + f, err := os.OpenFile(path, + os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + if err == nil { + defer f.Close() + f.WriteString(msg) + } + } + + if printToStdErr { + // Must print to stderr for this not to be read by the completion script. + fmt.Fprintf(os.Stderr, msg) + } +} + +// CompDebugln prints the specified string with a newline at the end +// to the same file as where the completion script prints its logs. +// Such logs are only printed when the user has set the environment +// variable BASH_COMP_DEBUG_FILE to the path of some file to be used. +func CompDebugln(msg string, printToStdErr bool) { + CompDebug(fmt.Sprintf("%s\n", msg), printToStdErr) +} + +// CompError prints the specified completion message to stderr. +func CompError(msg string) { + msg = fmt.Sprintf("[Error] %s", msg) + CompDebug(msg, true) +} + +// CompErrorln prints the specified completion message to stderr with a newline at the end. +func CompErrorln(msg string) { + CompError(fmt.Sprintf("%s\n", msg)) +} diff --git a/vendor/github.com/spf13/cobra/fish_completions.go b/vendor/github.com/spf13/cobra/fish_completions.go new file mode 100644 index 000000000000..c83609c83b61 --- /dev/null +++ b/vendor/github.com/spf13/cobra/fish_completions.go @@ -0,0 +1,172 @@ +package cobra + +import ( + "bytes" + "fmt" + "io" + "os" +) + +func genFishComp(buf *bytes.Buffer, name string, includeDesc bool) { + compCmd := ShellCompRequestCmd + if !includeDesc { + compCmd = ShellCompNoDescRequestCmd + } + buf.WriteString(fmt.Sprintf("# fish completion for %-36s -*- shell-script -*-\n", name)) + buf.WriteString(fmt.Sprintf(` +function __%[1]s_debug + set file "$BASH_COMP_DEBUG_FILE" + if test -n "$file" + echo "$argv" >> $file + end +end + +function __%[1]s_perform_completion + __%[1]s_debug "Starting __%[1]s_perform_completion with: $argv" + + set args (string split -- " " "$argv") + set lastArg "$args[-1]" + + __%[1]s_debug "args: $args" + __%[1]s_debug "last arg: $lastArg" + + set emptyArg "" + if test -z "$lastArg" + __%[1]s_debug "Setting emptyArg" + set emptyArg \"\" + end + __%[1]s_debug "emptyArg: $emptyArg" + + set requestComp "$args[1] %[2]s $args[2..-1] $emptyArg" + __%[1]s_debug "Calling $requestComp" + + set results (eval $requestComp 2> /dev/null) + set comps $results[1..-2] + set directiveLine $results[-1] + + # For Fish, when completing a flag with an = (e.g., -n=) + # completions must be prefixed with the flag + set flagPrefix (string match -r -- '-.*=' "$lastArg") + + __%[1]s_debug "Comps: $comps" + __%[1]s_debug "DirectiveLine: $directiveLine" + __%[1]s_debug "flagPrefix: $flagPrefix" + + for comp in $comps + printf "%%s%%s\n" "$flagPrefix" "$comp" + end + + printf "%%s\n" "$directiveLine" +end + +# This function does three things: +# 1- Obtain the completions and store them in the global __%[1]s_comp_results +# 2- Set the __%[1]s_comp_do_file_comp flag if file completion should be performed +# and unset it otherwise +# 3- Return true if the completion results are not empty +function __%[1]s_prepare_completions + # Start fresh + set --erase __%[1]s_comp_do_file_comp + set --erase __%[1]s_comp_results + + # Check if the command-line is already provided. This is useful for testing. + if not set --query __%[1]s_comp_commandLine + set __%[1]s_comp_commandLine (commandline) + end + __%[1]s_debug "commandLine is: $__%[1]s_comp_commandLine" + + set results (__%[1]s_perform_completion "$__%[1]s_comp_commandLine") + set --erase __%[1]s_comp_commandLine + __%[1]s_debug "Completion results: $results" + + if test -z "$results" + __%[1]s_debug "No completion, probably due to a failure" + # Might as well do file completion, in case it helps + set --global __%[1]s_comp_do_file_comp 1 + return 0 + end + + set directive (string sub --start 2 $results[-1]) + set --global __%[1]s_comp_results $results[1..-2] + + __%[1]s_debug "Completions are: $__%[1]s_comp_results" + __%[1]s_debug "Directive is: $directive" + + if test -z "$directive" + set directive 0 + end + + set compErr (math (math --scale 0 $directive / %[3]d) %% 2) + if test $compErr -eq 1 + __%[1]s_debug "Received error directive: aborting." + # Might as well do file completion, in case it helps + set --global __%[1]s_comp_do_file_comp 1 + return 0 + end + + set nospace (math (math --scale 0 $directive / %[4]d) %% 2) + set nofiles (math (math --scale 0 $directive / %[5]d) %% 2) + + __%[1]s_debug "nospace: $nospace, nofiles: $nofiles" + + # Important not to quote the variable for count to work + set numComps (count $__%[1]s_comp_results) + __%[1]s_debug "numComps: $numComps" + + if test $numComps -eq 1; and test $nospace -ne 0 + # To support the "nospace" directive we trick the shell + # by outputting an extra, longer completion. + __%[1]s_debug "Adding second completion to perform nospace directive" + set --append __%[1]s_comp_results $__%[1]s_comp_results[1]. + end + + if test $numComps -eq 0; and test $nofiles -eq 0 + __%[1]s_debug "Requesting file completion" + set --global __%[1]s_comp_do_file_comp 1 + end + + # If we don't want file completion, we must return true even if there + # are no completions found. This is because fish will perform the last + # completion command, even if its condition is false, if no other + # completion command was triggered + return (not set --query __%[1]s_comp_do_file_comp) +end + +# Remove any pre-existing completions for the program since we will be handling all of them +# TODO this cleanup is not sufficient. Fish completions are only loaded once the user triggers +# them, so the below deletion will not work as it is run too early. What else can we do? +complete -c %[1]s -e + +# The order in which the below two lines are defined is very important so that __%[1]s_prepare_completions +# is called first. It is __%[1]s_prepare_completions that sets up the __%[1]s_comp_do_file_comp variable. +# +# This completion will be run second as complete commands are added FILO. +# It triggers file completion choices when __%[1]s_comp_do_file_comp is set. +complete -c %[1]s -n 'set --query __%[1]s_comp_do_file_comp' + +# This completion will be run first as complete commands are added FILO. +# The call to __%[1]s_prepare_completions will setup both __%[1]s_comp_results abd __%[1]s_comp_do_file_comp. +# It provides the program's completion choices. +complete -c %[1]s -n '__%[1]s_prepare_completions' -f -a '$__%[1]s_comp_results' + +`, name, compCmd, ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp)) +} + +// GenFishCompletion generates fish completion file and writes to the passed writer. +func (c *Command) GenFishCompletion(w io.Writer, includeDesc bool) error { + buf := new(bytes.Buffer) + genFishComp(buf, c.Name(), includeDesc) + _, err := buf.WriteTo(w) + return err +} + +// GenFishCompletionFile generates fish completion file. +func (c *Command) GenFishCompletionFile(filename string, includeDesc bool) error { + outFile, err := os.Create(filename) + if err != nil { + return err + } + defer outFile.Close() + + return c.GenFishCompletion(outFile, includeDesc) +} diff --git a/vendor/github.com/spf13/cobra/fish_completions.md b/vendor/github.com/spf13/cobra/fish_completions.md new file mode 100644 index 000000000000..6bfe5f88ef27 --- /dev/null +++ b/vendor/github.com/spf13/cobra/fish_completions.md @@ -0,0 +1,7 @@ +## Generating Fish Completions for your own cobra.Command + +Cobra supports native Fish completions generated from the root `cobra.Command`. You can use the `command.GenFishCompletion()` or `command.GenFishCompletionFile()` functions. You must provide these functions with a parameter indicating if the completions should be annotated with a description; Cobra will provide the description automatically based on usage information. You can choose to make this option configurable by your users. + +### Limitations + +* Custom completions implemented using the `ValidArgsFunction` and `RegisterFlagCompletionFunc()` are supported automatically but the ones implemented in Bash scripting are not. diff --git a/vendor/github.com/spf13/cobra/go.mod b/vendor/github.com/spf13/cobra/go.mod index 9a9eb65a3703..dea1030ba431 100644 --- a/vendor/github.com/spf13/cobra/go.mod +++ b/vendor/github.com/spf13/cobra/go.mod @@ -3,11 +3,10 @@ module github.com/spf13/cobra go 1.12 require ( - github.com/BurntSushi/toml v0.3.1 // indirect - github.com/cpuguy83/go-md2man v1.0.10 + github.com/cpuguy83/go-md2man/v2 v2.0.0 github.com/inconshreveable/mousetrap v1.0.0 github.com/mitchellh/go-homedir v1.1.0 github.com/spf13/pflag v1.0.3 - github.com/spf13/viper v1.3.2 + github.com/spf13/viper v1.4.0 gopkg.in/yaml.v2 v2.2.2 ) diff --git a/vendor/github.com/spf13/cobra/go.sum b/vendor/github.com/spf13/cobra/go.sum index 9761f4d03fe7..3aaa2ac0fd62 100644 --- a/vendor/github.com/spf13/cobra/go.sum +++ b/vendor/github.com/spf13/cobra/go.sum @@ -1,31 +1,91 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/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/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= 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/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +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/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +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/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= +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/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= @@ -34,18 +94,56 @@ github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9 github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.3.2 h1:VUFqw5KcqRf7i70GOzW7N+Q7+gxVBkSSqiXB12+JQ4M= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a h1:1n5lsVfiQW3yfsRGu98756EH1YthsFqr/5mxHduZW2A= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/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-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/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-20181107165924-66b7b1311ac8/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 h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/vendor/github.com/tmc/grpc-websocket-proxy/wsproxy/websocket_proxy.go b/vendor/github.com/tmc/grpc-websocket-proxy/wsproxy/websocket_proxy.go index 0fca05a008ae..ada4c4ec5027 100644 --- a/vendor/github.com/tmc/grpc-websocket-proxy/wsproxy/websocket_proxy.go +++ b/vendor/github.com/tmc/grpc-websocket-proxy/wsproxy/websocket_proxy.go @@ -2,6 +2,7 @@ package wsproxy import ( "bufio" + "fmt" "io" "net/http" "strings" @@ -31,6 +32,7 @@ type Proxy struct { methodOverrideParam string tokenCookieName string requestMutator RequestMutatorFunc + headerForwarder func(header string) bool } // Logger collects log messages. @@ -71,6 +73,13 @@ func WithRequestMutator(fn RequestMutatorFunc) Option { } } +// WithForwardedHeaders allows controlling which headers are forwarded. +func WithForwardedHeaders(fn func(header string) bool) Option { + return func(p *Proxy) { + p.headerForwarder = fn + } +} + // WithLogger allows a custom FieldLogger to be supplied func WithLogger(logger Logger) Option { return func(p *Proxy) { @@ -78,6 +87,17 @@ func WithLogger(logger Logger) Option { } } +var defaultHeadersToForward = map[string]bool{ + "Origin": true, + "origin": true, + "Referer": true, + "referer": true, +} + +func defaultHeaderForwarder(header string) bool { + return defaultHeadersToForward[header] +} + // WebsocketProxy attempts to expose the underlying handler as a bidi websocket stream with newline-delimited // JSON as the content encoding. // @@ -96,6 +116,7 @@ func WebsocketProxy(h http.Handler, opts ...Option) http.Handler { logger: logrus.New(), methodOverrideParam: MethodOverrideParam, tokenCookieName: TokenCookieName, + headerForwarder: defaultHeaderForwarder, } for _, o := range opts { o(p) @@ -144,7 +165,12 @@ func (p *Proxy) proxy(w http.ResponseWriter, r *http.Request) { return } if swsp := r.Header.Get("Sec-WebSocket-Protocol"); swsp != "" { - request.Header.Set("Authorization", strings.Replace(swsp, "Bearer, ", "Bearer ", 1)) + request.Header.Set("Authorization", transformSubProtocolHeader(swsp)) + } + for header := range r.Header { + if p.headerForwarder(header) { + request.Header.Set(header, r.Header.Get(header)) + } } // If token cookie is present, populate Authorization header from the cookie instead. if cookie, err := r.Cookie(p.tokenCookieName); err == nil { @@ -239,6 +265,17 @@ func newInMemoryResponseWriter(w io.Writer) *inMemoryResponseWriter { } } +// IE and Edge do not delimit Sec-WebSocket-Protocol strings with spaces +func transformSubProtocolHeader(header string) string { + tokens := strings.SplitN(header, "Bearer,", 2) + + if len(tokens) < 2 { + return "" + } + + return fmt.Sprintf("Bearer %v", strings.Trim(tokens[1], " ")) +} + func (w *inMemoryResponseWriter) Write(b []byte) (int, error) { return w.Writer.Write(b) } diff --git a/vendor/go.uber.org/atomic/.travis.yml b/vendor/go.uber.org/atomic/.travis.yml index 58957222a331..0f3769e5fa6b 100644 --- a/vendor/go.uber.org/atomic/.travis.yml +++ b/vendor/go.uber.org/atomic/.travis.yml @@ -3,9 +3,13 @@ language: go go_import_path: go.uber.org/atomic go: - - 1.7 - - 1.8 - - 1.9 + - 1.11.x + - 1.12.x + +matrix: + include: + - go: 1.12.x + env: NO_TEST=yes LINT=yes cache: directories: @@ -15,9 +19,9 @@ install: - make install_ci script: - - make test_ci - - scripts/test-ubergo.sh - - make lint + - test -n "$NO_TEST" || make test_ci + - test -n "$NO_TEST" || scripts/test-ubergo.sh + - test -z "$LINT" || make install_lint lint after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/go.uber.org/atomic/Makefile b/vendor/go.uber.org/atomic/Makefile index dfc63d9db4f8..1ef263075d76 100644 --- a/vendor/go.uber.org/atomic/Makefile +++ b/vendor/go.uber.org/atomic/Makefile @@ -1,24 +1,13 @@ -PACKAGES := $(shell glide nv) # Many Go tools take file globs or directories as arguments instead of packages. PACKAGE_FILES ?= *.go - -# The linting tools evolve with each Go version, so run them only on the latest -# stable release. -GO_VERSION := $(shell go version | cut -d " " -f 3) -GO_MINOR_VERSION := $(word 2,$(subst ., ,$(GO_VERSION))) -LINTABLE_MINOR_VERSIONS := 7 8 -ifneq ($(filter $(LINTABLE_MINOR_VERSIONS),$(GO_MINOR_VERSION)),) -SHOULD_LINT := true -endif - - +# For pre go1.6 export GO15VENDOREXPERIMENT=1 .PHONY: build build: - go build -i $(PACKAGES) + go build -i ./... .PHONY: install @@ -29,7 +18,7 @@ install: .PHONY: test test: - go test -cover -race $(PACKAGES) + go test -cover -race ./... .PHONY: install_ci @@ -37,26 +26,24 @@ install_ci: install go get github.com/wadey/gocovmerge go get github.com/mattn/goveralls go get golang.org/x/tools/cmd/cover -ifdef SHOULD_LINT - go get github.com/golang/lint/golint -endif + +.PHONY: install_lint +install_lint: + go get golang.org/x/lint/golint + .PHONY: lint lint: -ifdef SHOULD_LINT @rm -rf lint.log @echo "Checking formatting..." @gofmt -d -s $(PACKAGE_FILES) 2>&1 | tee lint.log @echo "Checking vet..." - @$(foreach dir,$(PACKAGE_FILES),go tool vet $(dir) 2>&1 | tee -a lint.log;) + @go vet ./... 2>&1 | tee -a lint.log;) @echo "Checking lint..." - @$(foreach dir,$(PKGS),golint $(dir) 2>&1 | tee -a lint.log;) + @golint $$(go list ./...) 2>&1 | tee -a lint.log @echo "Checking for unresolved FIXMEs..." @git grep -i fixme | grep -v -e vendor -e Makefile | tee -a lint.log @[ ! -s lint.log ] -else - @echo "Skipping linters on" $(GO_VERSION) -endif .PHONY: test_ci diff --git a/vendor/go.uber.org/atomic/README.md b/vendor/go.uber.org/atomic/README.md index 6505abf65cb6..62eb8e576096 100644 --- a/vendor/go.uber.org/atomic/README.md +++ b/vendor/go.uber.org/atomic/README.md @@ -23,13 +23,13 @@ See the [documentation][doc] for a complete API specification. ## Development Status Stable. -
+___ Released under the [MIT License](LICENSE.txt). [doc-img]: https://godoc.org/github.com/uber-go/atomic?status.svg [doc]: https://godoc.org/go.uber.org/atomic -[ci-img]: https://travis-ci.org/uber-go/atomic.svg?branch=master -[ci]: https://travis-ci.org/uber-go/atomic +[ci-img]: https://travis-ci.com/uber-go/atomic.svg?branch=master +[ci]: https://travis-ci.com/uber-go/atomic [cov-img]: https://codecov.io/gh/uber-go/atomic/branch/master/graph/badge.svg [cov]: https://codecov.io/gh/uber-go/atomic [reportcard-img]: https://goreportcard.com/badge/go.uber.org/atomic diff --git a/vendor/go.uber.org/atomic/error.go b/vendor/go.uber.org/atomic/error.go new file mode 100644 index 000000000000..0489d19badbd --- /dev/null +++ b/vendor/go.uber.org/atomic/error.go @@ -0,0 +1,55 @@ +// Copyright (c) 2016 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package atomic + +// Error is an atomic type-safe wrapper around Value for errors +type Error struct{ v Value } + +// errorHolder is non-nil holder for error object. +// atomic.Value panics on saving nil object, so err object needs to be +// wrapped with valid object first. +type errorHolder struct{ err error } + +// NewError creates new atomic error object +func NewError(err error) *Error { + e := &Error{} + if err != nil { + e.Store(err) + } + return e +} + +// Load atomically loads the wrapped error +func (e *Error) Load() error { + v := e.v.Load() + if v == nil { + return nil + } + + eh := v.(errorHolder) + return eh.err +} + +// Store atomically stores error. +// NOTE: a holder object is allocated on each Store call. +func (e *Error) Store(err error) { + e.v.Store(errorHolder{err: err}) +} diff --git a/vendor/golang.org/x/net/html/const.go b/vendor/golang.org/x/net/html/const.go index a3a918f0b381..73804d3472cf 100644 --- a/vendor/golang.org/x/net/html/const.go +++ b/vendor/golang.org/x/net/html/const.go @@ -52,7 +52,6 @@ var isSpecialElementMap = map[string]bool{ "iframe": true, "img": true, "input": true, - "isindex": true, // The 'isindex' element has been removed, but keep it for backwards compatibility. "keygen": true, "li": true, "link": true, diff --git a/vendor/golang.org/x/net/html/node.go b/vendor/golang.org/x/net/html/node.go index 633ee15dc55b..1350eef22c3c 100644 --- a/vendor/golang.org/x/net/html/node.go +++ b/vendor/golang.org/x/net/html/node.go @@ -18,6 +18,11 @@ const ( ElementNode CommentNode DoctypeNode + // RawNode nodes are not returned by the parser, but can be part of the + // Node tree passed to func Render to insert raw HTML (without escaping). + // If so, this package makes no guarantee that the rendered HTML is secure + // (from e.g. Cross Site Scripting attacks) or well-formed. + RawNode scopeMarkerNode ) diff --git a/vendor/golang.org/x/net/html/parse.go b/vendor/golang.org/x/net/html/parse.go index c801a6a04e4c..2cd12fc816e7 100644 --- a/vendor/golang.org/x/net/html/parse.go +++ b/vendor/golang.org/x/net/html/parse.go @@ -184,6 +184,17 @@ func (p *parser) clearStackToContext(s scope) { } } +// parseGenericRawTextElements implements the generic raw text element parsing +// algorithm defined in 12.2.6.2. +// https://html.spec.whatwg.org/multipage/parsing.html#parsing-elements-that-contain-only-text +// TODO: Since both RAWTEXT and RCDATA states are treated as tokenizer's part +// officially, need to make tokenizer consider both states. +func (p *parser) parseGenericRawTextElement() { + p.addElement() + p.originalIM = p.im + p.im = textIM +} + // generateImpliedEndTags pops nodes off the stack of open elements as long as // the top node has a tag name of dd, dt, li, optgroup, option, p, rb, rp, rt or rtc. // If exceptions are specified, nodes with that name will not be popped off. @@ -192,16 +203,17 @@ func (p *parser) generateImpliedEndTags(exceptions ...string) { loop: for i = len(p.oe) - 1; i >= 0; i-- { n := p.oe[i] - if n.Type == ElementNode { - switch n.DataAtom { - case a.Dd, a.Dt, a.Li, a.Optgroup, a.Option, a.P, a.Rb, a.Rp, a.Rt, a.Rtc: - for _, except := range exceptions { - if n.Data == except { - break loop - } + if n.Type != ElementNode { + break + } + switch n.DataAtom { + case a.Dd, a.Dt, a.Li, a.Optgroup, a.Option, a.P, a.Rb, a.Rp, a.Rt, a.Rtc: + for _, except := range exceptions { + if n.Data == except { + break loop } - continue } + continue } break } @@ -369,8 +381,7 @@ findIdenticalElements: // Section 12.2.4.3. func (p *parser) clearActiveFormattingElements() { for { - n := p.afe.pop() - if len(p.afe) == 0 || n.Type == scopeMarkerNode { + if n := p.afe.pop(); len(p.afe) == 0 || n.Type == scopeMarkerNode { return } } @@ -625,25 +636,29 @@ func inHeadIM(p *parser) bool { switch p.tok.DataAtom { case a.Html: return inBodyIM(p) - case a.Base, a.Basefont, a.Bgsound, a.Command, a.Link, a.Meta: + case a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta: p.addElement() p.oe.pop() p.acknowledgeSelfClosingTag() return true case a.Noscript: - p.addElement() if p.scripting { - p.setOriginalIM() - p.im = textIM - } else { - p.im = inHeadNoscriptIM + p.parseGenericRawTextElement() + return true } + p.addElement() + p.im = inHeadNoscriptIM + // Don't let the tokenizer go into raw text mode when scripting is disabled. + p.tokenizer.NextIsNotRawText() return true - case a.Script, a.Title, a.Noframes, a.Style: + case a.Script, a.Title: p.addElement() p.setOriginalIM() p.im = textIM return true + case a.Noframes, a.Style: + p.parseGenericRawTextElement() + return true case a.Head: // Ignore the token. return true @@ -855,7 +870,7 @@ func inBodyIM(p *parser) bool { return true } copyAttributes(p.oe[0], p.tok) - case a.Base, a.Basefont, a.Bgsound, a.Command, a.Link, a.Meta, a.Noframes, a.Script, a.Style, a.Template, a.Title: + case a.Base, a.Basefont, a.Bgsound, a.Link, a.Meta, a.Noframes, a.Script, a.Style, a.Template, a.Title: return inHeadIM(p) case a.Body: if p.oe.contains(a.Template) { @@ -1014,53 +1029,6 @@ func inBodyIM(p *parser) bool { p.tok.DataAtom = a.Img p.tok.Data = a.Img.String() return false - case a.Isindex: - if p.form != nil { - // Ignore the token. - return true - } - action := "" - prompt := "This is a searchable index. Enter search keywords: " - attr := []Attribute{{Key: "name", Val: "isindex"}} - for _, t := range p.tok.Attr { - switch t.Key { - case "action": - action = t.Val - case "name": - // Ignore the attribute. - case "prompt": - prompt = t.Val - default: - attr = append(attr, t) - } - } - p.acknowledgeSelfClosingTag() - p.popUntil(buttonScope, a.P) - p.parseImpliedToken(StartTagToken, a.Form, a.Form.String()) - if p.form == nil { - // NOTE: The 'isindex' element has been removed, - // and the 'template' element has not been designed to be - // collaborative with the index element. - // - // Ignore the token. - return true - } - if action != "" { - p.form.Attr = []Attribute{{Key: "action", Val: action}} - } - p.parseImpliedToken(StartTagToken, a.Hr, a.Hr.String()) - p.parseImpliedToken(StartTagToken, a.Label, a.Label.String()) - p.addText(prompt) - p.addChild(&Node{ - Type: ElementNode, - DataAtom: a.Input, - Data: a.Input.String(), - Attr: attr, - }) - p.oe.pop() - p.parseImpliedToken(EndTagToken, a.Label, a.Label.String()) - p.parseImpliedToken(StartTagToken, a.Hr, a.Hr.String()) - p.parseImpliedToken(EndTagToken, a.Form, a.Form.String()) case a.Textarea: p.addElement() p.setOriginalIM() @@ -1070,18 +1038,21 @@ func inBodyIM(p *parser) bool { p.popUntil(buttonScope, a.P) p.reconstructActiveFormattingElements() p.framesetOK = false - p.addElement() - p.setOriginalIM() - p.im = textIM + p.parseGenericRawTextElement() case a.Iframe: p.framesetOK = false + p.parseGenericRawTextElement() + case a.Noembed: + p.parseGenericRawTextElement() + case a.Noscript: + if p.scripting { + p.parseGenericRawTextElement() + return true + } + p.reconstructActiveFormattingElements() p.addElement() - p.setOriginalIM() - p.im = textIM - case a.Noembed, a.Noscript: - p.addElement() - p.setOriginalIM() - p.im = textIM + // Don't let the tokenizer go into raw text mode when scripting is disabled. + p.tokenizer.NextIsNotRawText() case a.Select: p.reconstructActiveFormattingElements() p.addElement() @@ -1198,14 +1169,13 @@ func inBodyIM(p *parser) bool { if len(p.templateStack) > 0 { p.im = inTemplateIM return false - } else { - for _, e := range p.oe { - switch e.DataAtom { - case a.Dd, a.Dt, a.Li, a.Optgroup, a.Option, a.P, a.Rb, a.Rp, a.Rt, a.Rtc, a.Tbody, a.Td, a.Tfoot, a.Th, - a.Thead, a.Tr, a.Body, a.Html: - default: - return true - } + } + for _, e := range p.oe { + switch e.DataAtom { + case a.Dd, a.Dt, a.Li, a.Optgroup, a.Option, a.P, a.Rb, a.Rp, a.Rt, a.Rtc, a.Tbody, a.Td, a.Tfoot, a.Th, + a.Thead, a.Tr, a.Body, a.Html: + default: + return true } } } @@ -1221,9 +1191,15 @@ func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom, tagName string) { // Once the code successfully parses the comprehensive test suite, we should // refactor this code to be more idiomatic. - // Steps 1-4. The outer loop. + // Steps 1-2 + if current := p.oe.top(); current.Data == tagName && p.afe.index(current) == -1 { + p.oe.pop() + return + } + + // Steps 3-5. The outer loop. for i := 0; i < 8; i++ { - // Step 5. Find the formatting element. + // Step 6. Find the formatting element. var formattingElement *Node for j := len(p.afe) - 1; j >= 0; j-- { if p.afe[j].Type == scopeMarkerNode { @@ -1238,17 +1214,22 @@ func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom, tagName string) { p.inBodyEndTagOther(tagAtom, tagName) return } + + // Step 7. Ignore the tag if formatting element is not in the stack of open elements. feIndex := p.oe.index(formattingElement) if feIndex == -1 { p.afe.remove(formattingElement) return } + // Step 8. Ignore the tag if formatting element is not in the scope. if !p.elementInScope(defaultScope, tagAtom) { // Ignore the tag. return } - // Steps 9-10. Find the furthest block. + // Step 9. This step is omitted because it's just a parse error but no need to return. + + // Steps 10-11. Find the furthest block. var furthestBlock *Node for _, e := range p.oe[feIndex:] { if isSpecialElement(e) { @@ -1265,47 +1246,65 @@ func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom, tagName string) { return } - // Steps 11-12. Find the common ancestor and bookmark node. + // Steps 12-13. Find the common ancestor and bookmark node. commonAncestor := p.oe[feIndex-1] bookmark := p.afe.index(formattingElement) - // Step 13. The inner loop. Find the lastNode to reparent. + // Step 14. The inner loop. Find the lastNode to reparent. lastNode := furthestBlock node := furthestBlock x := p.oe.index(node) - // Steps 13.1-13.2 - for j := 0; j < 3; j++ { - // Step 13.3. + // Step 14.1. + j := 0 + for { + // Step 14.2. + j++ + // Step. 14.3. x-- node = p.oe[x] - // Step 13.4 - 13.5. + // Step 14.4. Go to the next step if node is formatting element. + if node == formattingElement { + break + } + // Step 14.5. Remove node from the list of active formatting elements if + // inner loop counter is greater than three and node is in the list of + // active formatting elements. + if ni := p.afe.index(node); j > 3 && ni > -1 { + p.afe.remove(node) + // If any element of the list of active formatting elements is removed, + // we need to take care whether bookmark should be decremented or not. + // This is because the value of bookmark may exceed the size of the + // list by removing elements from the list. + if ni <= bookmark { + bookmark-- + } + continue + } + // Step 14.6. Continue the next inner loop if node is not in the list of + // active formatting elements. if p.afe.index(node) == -1 { p.oe.remove(node) continue } - // Step 13.6. - if node == formattingElement { - break - } - // Step 13.7. + // Step 14.7. clone := node.clone() p.afe[p.afe.index(node)] = clone p.oe[p.oe.index(node)] = clone node = clone - // Step 13.8. + // Step 14.8. if lastNode == furthestBlock { bookmark = p.afe.index(node) + 1 } - // Step 13.9. + // Step 14.9. if lastNode.Parent != nil { lastNode.Parent.RemoveChild(lastNode) } node.AppendChild(lastNode) - // Step 13.10. + // Step 14.10. lastNode = node } - // Step 14. Reparent lastNode to the common ancestor, + // Step 15. Reparent lastNode to the common ancestor, // or for misnested table nodes, to the foster parent. if lastNode.Parent != nil { lastNode.Parent.RemoveChild(lastNode) @@ -1317,13 +1316,13 @@ func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom, tagName string) { commonAncestor.AppendChild(lastNode) } - // Steps 15-17. Reparent nodes from the furthest block's children + // Steps 16-18. Reparent nodes from the furthest block's children // to a clone of the formatting element. clone := formattingElement.clone() reparentChildren(clone, furthestBlock) furthestBlock.AppendChild(clone) - // Step 18. Fix up the list of active formatting elements. + // Step 19. Fix up the list of active formatting elements. if oldLoc := p.afe.index(formattingElement); oldLoc != -1 && oldLoc < bookmark { // Move the bookmark with the rest of the list. bookmark-- @@ -1331,7 +1330,7 @@ func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom, tagName string) { p.afe.remove(formattingElement) p.afe.insert(bookmark, clone) - // Step 19. Fix up the stack of open elements. + // Step 20. Fix up the stack of open elements. p.oe.remove(formattingElement) p.oe.insert(p.oe.index(furthestBlock)+1, clone) } @@ -1502,14 +1501,13 @@ func inCaptionIM(p *parser) bool { case StartTagToken: switch p.tok.DataAtom { case a.Caption, a.Col, a.Colgroup, a.Tbody, a.Td, a.Tfoot, a.Thead, a.Tr: - if p.popUntil(tableScope, a.Caption) { - p.clearActiveFormattingElements() - p.im = inTableIM - return false - } else { + if !p.popUntil(tableScope, a.Caption) { // Ignore the token. return true } + p.clearActiveFormattingElements() + p.im = inTableIM + return false case a.Select: p.reconstructActiveFormattingElements() p.addElement() @@ -1526,14 +1524,13 @@ func inCaptionIM(p *parser) bool { } return true case a.Table: - if p.popUntil(tableScope, a.Caption) { - p.clearActiveFormattingElements() - p.im = inTableIM - return false - } else { + if !p.popUntil(tableScope, a.Caption) { // Ignore the token. return true } + p.clearActiveFormattingElements() + p.im = inTableIM + return false case a.Body, a.Col, a.Colgroup, a.Html, a.Tbody, a.Td, a.Tfoot, a.Th, a.Thead, a.Tr: // Ignore the token. return true @@ -1777,12 +1774,11 @@ func inSelectIM(p *parser) bool { } p.addElement() case a.Select: - if p.popUntil(selectScope, a.Select) { - p.resetInsertionMode() - } else { + if !p.popUntil(selectScope, a.Select) { // Ignore the token. return true } + p.resetInsertionMode() case a.Input, a.Keygen, a.Textarea: if p.elementInScope(selectScope, a.Select) { p.parseImpliedToken(EndTagToken, a.Select, a.Select.String()) @@ -1810,12 +1806,11 @@ func inSelectIM(p *parser) bool { p.oe = p.oe[:i] } case a.Select: - if p.popUntil(selectScope, a.Select) { - p.resetInsertionMode() - } else { + if !p.popUntil(selectScope, a.Select) { // Ignore the token. return true } + p.resetInsertionMode() case a.Template: return inHeadIM(p) } @@ -2352,8 +2347,7 @@ func ParseWithOptions(r io.Reader, opts ...ParseOption) (*Node, error) { f(p) } - err := p.parse() - if err != nil { + if err := p.parse(); err != nil { return nil, err } return p.doc, nil @@ -2411,8 +2405,7 @@ func ParseFragmentWithOptions(r io.Reader, context *Node, opts ...ParseOption) ( } } - err := p.parse() - if err != nil { + if err := p.parse(); err != nil { return nil, err } diff --git a/vendor/golang.org/x/net/html/render.go b/vendor/golang.org/x/net/html/render.go index d34564f49dd1..46879c08325e 100644 --- a/vendor/golang.org/x/net/html/render.go +++ b/vendor/golang.org/x/net/html/render.go @@ -134,6 +134,9 @@ func render1(w writer, n *Node) error { } } return w.WriteByte('>') + case RawNode: + _, err := w.WriteString(n.Data) + return err default: return errors.New("html: unknown node type") } @@ -252,20 +255,19 @@ func writeQuoted(w writer, s string) error { // Section 12.1.2, "Elements", gives this list of void elements. Void elements // are those that can't have any contents. var voidElements = map[string]bool{ - "area": true, - "base": true, - "br": true, - "col": true, - "command": true, - "embed": true, - "hr": true, - "img": true, - "input": true, - "keygen": true, - "link": true, - "meta": true, - "param": true, - "source": true, - "track": true, - "wbr": true, + "area": true, + "base": true, + "br": true, + "col": true, + "embed": true, + "hr": true, + "img": true, + "input": true, + "keygen": true, + "link": true, + "meta": true, + "param": true, + "source": true, + "track": true, + "wbr": true, } diff --git a/vendor/golang.org/x/net/html/token.go b/vendor/golang.org/x/net/html/token.go index ae0d1b05cd38..877709f991b5 100644 --- a/vendor/golang.org/x/net/html/token.go +++ b/vendor/golang.org/x/net/html/token.go @@ -296,8 +296,7 @@ func (z *Tokenizer) Buffered() []byte { // too many times in succession. func readAtLeastOneByte(r io.Reader, b []byte) (int, error) { for i := 0; i < 100; i++ { - n, err := r.Read(b) - if n != 0 || err != nil { + if n, err := r.Read(b); n != 0 || err != nil { return n, err } } diff --git a/vendor/golang.org/x/net/http2/http2.go b/vendor/golang.org/x/net/http2/http2.go index bdaba1d46b19..27cc893cc0e9 100644 --- a/vendor/golang.org/x/net/http2/http2.go +++ b/vendor/golang.org/x/net/http2/http2.go @@ -19,7 +19,6 @@ package http2 // import "golang.org/x/net/http2" import ( "bufio" "crypto/tls" - "errors" "fmt" "io" "net/http" @@ -173,11 +172,6 @@ func (s SettingID) String() string { return fmt.Sprintf("UNKNOWN_SETTING_%d", uint16(s)) } -var ( - errInvalidHeaderFieldName = errors.New("http2: invalid header field name") - errInvalidHeaderFieldValue = errors.New("http2: invalid header field value") -) - // validWireHeaderFieldName reports whether v is a valid header field // name (key). See httpguts.ValidHeaderName for the base rules. // diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go index de31d72b2c35..bc9e41a1b770 100644 --- a/vendor/golang.org/x/net/http2/server.go +++ b/vendor/golang.org/x/net/http2/server.go @@ -581,13 +581,10 @@ type stream struct { cancelCtx func() // owned by serverConn's serve loop: - bodyBytes int64 // body bytes seen so far - declBodyBytes int64 // or -1 if undeclared - flow flow // limits writing from Handler to client - inflow flow // what the client is allowed to POST/etc to us - parent *stream // or nil - numTrailerValues int64 - weight uint8 + bodyBytes int64 // body bytes seen so far + declBodyBytes int64 // or -1 if undeclared + flow flow // limits writing from Handler to client + inflow flow // what the client is allowed to POST/etc to us state streamState resetQueued bool // RST_STREAM queued for write; set by sc.resetStream gotTrailerHeader bool // HEADER frame for trailers was seen diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go index 8e0059db6681..81778bec6127 100644 --- a/vendor/golang.org/x/net/http2/transport.go +++ b/vendor/golang.org/x/net/http2/transport.go @@ -93,7 +93,7 @@ type Transport struct { // send in the initial settings frame. It is how many bytes // of response headers are allowed. Unlike the http2 spec, zero here // means to use a default limit (currently 10MB). If you actually - // want to advertise an ulimited value to the peer, Transport + // want to advertise an unlimited value to the peer, Transport // interprets the highest possible value here (0xffffffff or 1<<32-1) // to mean no limit. MaxHeaderListSize uint32 @@ -2198,8 +2198,6 @@ func (rl *clientConnReadLoop) processData(f *DataFrame) error { return nil } -var errInvalidTrailers = errors.New("http2: invalid trailers") - func (rl *clientConnReadLoop) endStream(cs *clientStream) { // TODO: check that any declared content-length matches, like // server.go's (*stream).endStream method. @@ -2430,7 +2428,6 @@ func (cc *ClientConn) writeStreamReset(streamID uint32, code ErrCode, err error) var ( errResponseHeaderListSize = errors.New("http2: response header list larger than advertised limit") errRequestHeaderListSize = errors.New("http2: request header list larger than peer's advertised limit") - errPseudoTrailers = errors.New("http2: invalid pseudo header in trailers") ) func (cc *ClientConn) logf(format string, args ...interface{}) { diff --git a/vendor/golang.org/x/net/ipv4/helper.go b/vendor/golang.org/x/net/ipv4/helper.go index b494a2cde46b..e845a7376ea3 100644 --- a/vendor/golang.org/x/net/ipv4/helper.go +++ b/vendor/golang.org/x/net/ipv4/helper.go @@ -13,16 +13,13 @@ import ( ) var ( - errInvalidConn = errors.New("invalid connection") - errMissingAddress = errors.New("missing address") - errMissingHeader = errors.New("missing header") - errNilHeader = errors.New("nil header") - errHeaderTooShort = errors.New("header too short") - errExtHeaderTooShort = errors.New("extension header too short") - errInvalidConnType = errors.New("invalid conn type") - errNoSuchInterface = errors.New("no such interface") - errNoSuchMulticastInterface = errors.New("no such multicast interface") - errNotImplemented = errors.New("not implemented on " + runtime.GOOS + "/" + runtime.GOARCH) + errInvalidConn = errors.New("invalid connection") + errMissingAddress = errors.New("missing address") + errNilHeader = errors.New("nil header") + errHeaderTooShort = errors.New("header too short") + errExtHeaderTooShort = errors.New("extension header too short") + errInvalidConnType = errors.New("invalid conn type") + errNotImplemented = errors.New("not implemented on " + runtime.GOOS + "/" + runtime.GOARCH) // See https://www.freebsd.org/doc/en/books/porters-handbook/versions.html. freebsdVersion uint32 diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreq.go b/vendor/golang.org/x/net/ipv4/sys_asmreq.go index c5eaafe96be2..76d670acaa9e 100644 --- a/vendor/golang.org/x/net/ipv4/sys_asmreq.go +++ b/vendor/golang.org/x/net/ipv4/sys_asmreq.go @@ -7,12 +7,15 @@ package ipv4 import ( + "errors" "net" "unsafe" "golang.org/x/net/internal/socket" ) +var errNoSuchInterface = errors.New("no such interface") + func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { mreq := ipMreq{Multiaddr: [4]byte{grp[0], grp[1], grp[2], grp[3]}} if err := setIPMreqInterface(&mreq, ifi); err != nil { diff --git a/vendor/golang.org/x/net/ipv6/helper.go b/vendor/golang.org/x/net/ipv6/helper.go index f767b1f5dddb..c2d508f9c303 100644 --- a/vendor/golang.org/x/net/ipv6/helper.go +++ b/vendor/golang.org/x/net/ipv6/helper.go @@ -15,7 +15,6 @@ var ( errMissingAddress = errors.New("missing address") errHeaderTooShort = errors.New("header too short") errInvalidConnType = errors.New("invalid conn type") - errNoSuchInterface = errors.New("no such interface") errNotImplemented = errors.New("not implemented on " + runtime.GOOS + "/" + runtime.GOARCH) ) diff --git a/vendor/modules.txt b/vendor/modules.txt index 74aaf294db5d..a34e376d23ae 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -356,7 +356,7 @@ github.com/coreos/go-systemd/activation github.com/coreos/go-systemd/daemon github.com/coreos/go-systemd/dbus github.com/coreos/go-systemd/journal -# github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea +# github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f github.com/coreos/pkg/capnslog # github.com/cpuguy83/go-md2man/v2 v2.0.0 github.com/cpuguy83/go-md2man/v2/md2man @@ -450,13 +450,13 @@ github.com/go-openapi/jsonreference github.com/go-openapi/loads # github.com/go-openapi/runtime v0.19.4 github.com/go-openapi/runtime -# github.com/go-openapi/spec v0.19.3 +# github.com/go-openapi/spec v0.19.5 github.com/go-openapi/spec -# github.com/go-openapi/strfmt v0.19.3 +# github.com/go-openapi/strfmt v0.19.5 github.com/go-openapi/strfmt # github.com/go-openapi/swag v0.19.5 github.com/go-openapi/swag -# github.com/go-openapi/validate v0.19.5 +# github.com/go-openapi/validate v0.19.8 github.com/go-openapi/validate # github.com/go-sql-driver/mysql v1.4.1 github.com/go-sql-driver/mysql @@ -594,7 +594,7 @@ github.com/grpc-ecosystem/grpc-gateway/utilities # github.com/hashicorp/golang-lru v0.5.3 github.com/hashicorp/golang-lru github.com/hashicorp/golang-lru/simplelru -# github.com/imdario/mergo v0.3.7 +# github.com/imdario/mergo v0.3.6 github.com/imdario/mergo # github.com/inconshreveable/mousetrap v1.0.0 github.com/inconshreveable/mousetrap @@ -715,7 +715,7 @@ github.com/prometheus/procfs/xfs # github.com/rakelkar/gonetsh v0.0.0-20190930180311-e5c5ffe4bdf0 github.com/rakelkar/gonetsh/netroute github.com/rakelkar/gonetsh/netsh -# github.com/rancher/dynamiclistener v0.2.0 +# github.com/rancher/dynamiclistener v0.2.1-0.20200714201033-9c1939da3af9 => github.com/brandond/dynamiclistener v0.3.1-0.20200722174601-8e612bed7a58 github.com/rancher/dynamiclistener github.com/rancher/dynamiclistener/cert github.com/rancher/dynamiclistener/factory @@ -725,19 +725,11 @@ github.com/rancher/dynamiclistener/storage/memory # github.com/rancher/go-powershell v0.0.0-20200701182037-6845e6fcfa79 github.com/rancher/go-powershell/backend github.com/rancher/go-powershell/utils -# github.com/rancher/helm-controller v0.6.3 +# github.com/rancher/helm-controller v0.6.3 => github.com/brandond/helm-controller v0.6.4-0.20200722213229-29019174fe5e github.com/rancher/helm-controller/pkg/apis/helm.cattle.io github.com/rancher/helm-controller/pkg/apis/helm.cattle.io/v1 -github.com/rancher/helm-controller/pkg/generated/clientset/versioned -github.com/rancher/helm-controller/pkg/generated/clientset/versioned/scheme -github.com/rancher/helm-controller/pkg/generated/clientset/versioned/typed/helm.cattle.io/v1 github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io github.com/rancher/helm-controller/pkg/generated/controllers/helm.cattle.io/v1 -github.com/rancher/helm-controller/pkg/generated/informers/externalversions -github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io -github.com/rancher/helm-controller/pkg/generated/informers/externalversions/helm.cattle.io/v1 -github.com/rancher/helm-controller/pkg/generated/informers/externalversions/internalinterfaces -github.com/rancher/helm-controller/pkg/generated/listers/helm.cattle.io/v1 github.com/rancher/helm-controller/pkg/helm # github.com/rancher/kine v0.4.0 github.com/rancher/kine/pkg/broadcaster @@ -752,6 +744,13 @@ github.com/rancher/kine/pkg/logstructured github.com/rancher/kine/pkg/logstructured/sqllog github.com/rancher/kine/pkg/server github.com/rancher/kine/pkg/tls +# github.com/rancher/lasso v0.0.0-20200515155337-a34e1e26ad91 +github.com/rancher/lasso/pkg/cache +github.com/rancher/lasso/pkg/client +github.com/rancher/lasso/pkg/controller +github.com/rancher/lasso/pkg/log +github.com/rancher/lasso/pkg/mapper +github.com/rancher/lasso/pkg/scheme # github.com/rancher/remotedialer v0.2.0 github.com/rancher/remotedialer # github.com/rancher/spur v0.0.0-20200617165101-8702c8e4ce7a @@ -759,7 +758,7 @@ github.com/rancher/spur/cli github.com/rancher/spur/cli/altsrc github.com/rancher/spur/flag github.com/rancher/spur/generic -# github.com/rancher/wrangler v0.6.1 +# github.com/rancher/wrangler v0.6.2-0.20200721203632-787d93e49342 github.com/rancher/wrangler/pkg/apply github.com/rancher/wrangler/pkg/apply/injectors github.com/rancher/wrangler/pkg/cleanup @@ -770,6 +769,14 @@ github.com/rancher/wrangler/pkg/controller-gen/generators github.com/rancher/wrangler/pkg/crd github.com/rancher/wrangler/pkg/data github.com/rancher/wrangler/pkg/data/convert +github.com/rancher/wrangler/pkg/generated/controllers/apps +github.com/rancher/wrangler/pkg/generated/controllers/apps/v1 +github.com/rancher/wrangler/pkg/generated/controllers/batch +github.com/rancher/wrangler/pkg/generated/controllers/batch/v1 +github.com/rancher/wrangler/pkg/generated/controllers/core +github.com/rancher/wrangler/pkg/generated/controllers/core/v1 +github.com/rancher/wrangler/pkg/generated/controllers/rbac +github.com/rancher/wrangler/pkg/generated/controllers/rbac/v1 github.com/rancher/wrangler/pkg/generic github.com/rancher/wrangler/pkg/gvk github.com/rancher/wrangler/pkg/kv @@ -787,15 +794,6 @@ github.com/rancher/wrangler/pkg/schemes github.com/rancher/wrangler/pkg/signals github.com/rancher/wrangler/pkg/slice github.com/rancher/wrangler/pkg/start -# github.com/rancher/wrangler-api v0.6.0 -github.com/rancher/wrangler-api/pkg/generated/controllers/apps -github.com/rancher/wrangler-api/pkg/generated/controllers/apps/v1 -github.com/rancher/wrangler-api/pkg/generated/controllers/batch -github.com/rancher/wrangler-api/pkg/generated/controllers/batch/v1 -github.com/rancher/wrangler-api/pkg/generated/controllers/core -github.com/rancher/wrangler-api/pkg/generated/controllers/core/v1 -github.com/rancher/wrangler-api/pkg/generated/controllers/rbac -github.com/rancher/wrangler-api/pkg/generated/controllers/rbac/v1 # github.com/robfig/cron v1.1.0 github.com/robfig/cron # github.com/rootless-containers/rootlesskit v0.7.2 @@ -841,7 +839,7 @@ github.com/soheilhy/cmux # github.com/spf13/afero v1.2.2 github.com/spf13/afero github.com/spf13/afero/mem -# github.com/spf13/cobra v0.0.5 +# github.com/spf13/cobra v1.0.0 github.com/spf13/cobra # github.com/spf13/pflag v1.0.5 github.com/spf13/pflag @@ -851,7 +849,7 @@ github.com/syndtr/gocapability/capability github.com/tchap/go-patricia/patricia # github.com/theckman/go-flock v0.7.1 github.com/theckman/go-flock -# github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8 +# github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 github.com/tmc/grpc-websocket-proxy/wsproxy # github.com/urfave/cli v1.22.2 github.com/urfave/cli @@ -995,7 +993,7 @@ go.opencensus.io/trace go.opencensus.io/trace/internal go.opencensus.io/trace/propagation go.opencensus.io/trace/tracestate -# go.uber.org/atomic v1.3.2 +# go.uber.org/atomic v1.4.0 go.uber.org/atomic # go.uber.org/multierr v1.1.0 go.uber.org/multierr @@ -1025,7 +1023,7 @@ golang.org/x/crypto/salsa20/salsa golang.org/x/crypto/ssh golang.org/x/crypto/ssh/internal/bcrypt_pbkdf golang.org/x/crypto/ssh/terminal -# golang.org/x/net v0.0.0-20191204025024-5ee1b9f4859a +# golang.org/x/net v0.0.0-20200226121028-0de0cce0169b golang.org/x/net/bpf golang.org/x/net/context golang.org/x/net/context/ctxhttp @@ -1486,7 +1484,7 @@ k8s.io/apiserver/plugin/pkg/authenticator/request/basicauth k8s.io/apiserver/plugin/pkg/authenticator/token/oidc k8s.io/apiserver/plugin/pkg/authenticator/token/webhook k8s.io/apiserver/plugin/pkg/authorizer/webhook -# k8s.io/cli-runtime v0.0.0 => github.com/rancher/kubernetes/staging/src/k8s.io/cli-runtime v1.18.6-k3s1 +# k8s.io/cli-runtime v0.17.2 => github.com/rancher/kubernetes/staging/src/k8s.io/cli-runtime v1.18.6-k3s1 k8s.io/cli-runtime/pkg/genericclioptions k8s.io/cli-runtime/pkg/kustomize k8s.io/cli-runtime/pkg/kustomize/k8sdeps