From 37a60b18caa53a55c6767fe296670b1e61d38a89 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Fri, 12 Jul 2019 10:13:20 -0700 Subject: [PATCH] Update wrangler --- .../controllers/k3s.cattle.io/factory.go | 6 ++ trash.lock | 6 +- vendor.conf | 6 +- .../github.com/rancher/helm-controller/go.mod | 4 +- .../github.com/rancher/helm-controller/go.sum | 4 + .../controllers/helm.cattle.io/factory.go | 6 ++ vendor/github.com/rancher/wrangler-api/go.mod | 2 +- vendor/github.com/rancher/wrangler-api/go.sum | 2 + .../pkg/generated/controllers/apps/factory.go | 6 ++ .../generated/controllers/batch/factory.go | 6 ++ .../pkg/generated/controllers/core/factory.go | 6 ++ .../pkg/generated/controllers/rbac/factory.go | 6 ++ .../wrangler/pkg/apply/desiredset_apply.go | 10 ++- .../wrangler/pkg/apply/desiredset_compare.go | 12 ++- .../wrangler/pkg/controller-gen/args/args.go | 1 + .../controller-gen/generators/factory_go.go | 7 ++ .../pkg/controller-gen/generators/util.go | 1 + .../wrangler/pkg/controller-gen/main.go | 8 +- .../wrangler/pkg/generic/controller.go | 1 - .../rancher/wrangler/pkg/gvk/get.go | 27 ++++++ .../wrangler/pkg/objectset/objectset.go | 89 ++++++------------- .../rancher/wrangler/pkg/schemes/all.go | 7 ++ 22 files changed, 141 insertions(+), 82 deletions(-) create mode 100644 vendor/github.com/rancher/wrangler/pkg/gvk/get.go create mode 100644 vendor/github.com/rancher/wrangler/pkg/schemes/all.go diff --git a/pkg/generated/controllers/k3s.cattle.io/factory.go b/pkg/generated/controllers/k3s.cattle.io/factory.go index 7b96258fb0..c5e423ad62 100644 --- a/pkg/generated/controllers/k3s.cattle.io/factory.go +++ b/pkg/generated/controllers/k3s.cattle.io/factory.go @@ -23,12 +23,18 @@ import ( "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 diff --git a/trash.lock b/trash.lock index ed803f8a43..07b88356a6 100755 --- a/trash.lock +++ b/trash.lock @@ -227,13 +227,13 @@ import: - package: github.com/rancher/dynamiclistener version: 4716ac2362986f28bede3f3caf5d1ce347da55b0 - package: github.com/rancher/helm-controller - version: d5f5c830231110722f14d446d3b2038e5cdf1532 + version: v0.2.1 - package: github.com/rancher/remotedialer version: 66218bc42b4fa27c34523c0d19a41a0e2b74983d - package: github.com/rancher/wrangler - version: 4202dbfa88013c19238bb004d82e013f0593493d + version: 7737c167e16514a38229bc64c839cee8cd14e6d3 - package: github.com/rancher/wrangler-api - version: efe26ac6a9d720e1bfa5a8cc5f8dce5ad598ce26 + version: v0.1.4 - package: github.com/robfig/cron version: v1-53-gdf38d32658d878 - package: github.com/rootless-containers/rootlesskit diff --git a/vendor.conf b/vendor.conf index 1c03c21434..1064a2e2ef 100644 --- a/vendor.conf +++ b/vendor.conf @@ -11,11 +11,11 @@ package=github.com/opencontainers/runc/contrib/cmd/recvtty k8s.io/kubernetes v1.14.3-k3s.2 https://github.com/rancher/k3s.git transitive=true,staging=true -github.com/rancher/wrangler 4202dbfa88013c19238bb004d82e013f0593493d -github.com/rancher/wrangler-api efe26ac6a9d720e1bfa5a8cc5f8dce5ad598ce26 +github.com/rancher/wrangler 7737c167e16514a38229bc64c839cee8cd14e6d3 +github.com/rancher/wrangler-api v0.1.4 github.com/rancher/dynamiclistener 4716ac2362986f28bede3f3caf5d1ce347da55b0 github.com/rancher/remotedialer 66218bc42b4fa27c34523c0d19a41a0e2b74983d -github.com/rancher/helm-controller d5f5c830231110722f14d446d3b2038e5cdf1532 +github.com/rancher/helm-controller v0.2.1 github.com/matryer/moq ee5226d43009 https://github.com/rancher/moq.git github.com/coreos/flannel 823afe66b2266bf71f5bec24e6e28b26d70cfc7c https://github.com/ibuildthecloud/flannel.git github.com/natefinch/lumberjack aee4629129445bbdfb69aa565537dcfa16544311 diff --git a/vendor/github.com/rancher/helm-controller/go.mod b/vendor/github.com/rancher/helm-controller/go.mod index 85b4ff052b..e18b2251e8 100644 --- a/vendor/github.com/rancher/helm-controller/go.mod +++ b/vendor/github.com/rancher/helm-controller/go.mod @@ -3,8 +3,8 @@ module github.com/rancher/helm-controller go 1.12 require ( - github.com/rancher/wrangler v0.1.3 - github.com/rancher/wrangler-api v0.1.3 + github.com/rancher/wrangler v0.1.4 + github.com/rancher/wrangler-api v0.1.4 github.com/sirupsen/logrus v1.4.1 github.com/stretchr/testify v1.3.0 github.com/urfave/cli v1.20.0 diff --git a/vendor/github.com/rancher/helm-controller/go.sum b/vendor/github.com/rancher/helm-controller/go.sum index 807d66fe41..cc25fbd5b8 100644 --- a/vendor/github.com/rancher/helm-controller/go.sum +++ b/vendor/github.com/rancher/helm-controller/go.sum @@ -97,12 +97,16 @@ github.com/rancher/wrangler v0.1.2 h1:+oehkcBDInF6dcnG1ZWczL/tV/c7J8ILP3qEFCme7l github.com/rancher/wrangler v0.1.2/go.mod h1:EYP7cqpg42YqElaCm+U9ieSrGQKAXxUH5xsr+XGpWyE= github.com/rancher/wrangler v0.1.3 h1:WVMLj7kxTOx2pQyAnUKbbFhuFqhAuzkrsSvk37VaYwY= github.com/rancher/wrangler v0.1.3/go.mod h1:EYP7cqpg42YqElaCm+U9ieSrGQKAXxUH5xsr+XGpWyE= +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.1.1 h1:qzIgDnURHTlJ31jMTy917L3y0tAjYRaHhMdmT+Z393s= github.com/rancher/wrangler-api v0.1.1/go.mod h1:vholckBg588JqP3M3vyEDUz/ERaB1M3ilnCuV5XxPHM= github.com/rancher/wrangler-api v0.1.2 h1:PKWfgxQKNG5v2R7Uo+NYWk6wRXShV55WymiKAFk9eIU= github.com/rancher/wrangler-api v0.1.2/go.mod h1:zD0Xy4pu2mTUE9pabkOwdzhwms8Yl9AGvDJzGW260Wk= github.com/rancher/wrangler-api v0.1.3 h1:W6FPEb9cGRNpidiw6S5mu+C6iZ4Ji+wBobjybPOdxQo= github.com/rancher/wrangler-api v0.1.3/go.mod h1:KPJcBpKwfzsfBL8BO+3fU17NBw8bAk3DUVnHIwE8BGE= +github.com/rancher/wrangler-api v0.1.4 h1:2jkZBat27ZHR2RCWQacFEIMdkA1A5fbDE439s3gHLU8= +github.com/rancher/wrangler-api v0.1.4/go.mod h1:Mc8bNN5rNxpQ7am2orUbonahw4xJ6ztF+fUTSku8KnE= github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= 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 bd8346da9a..d50b22e97a 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 @@ -23,12 +23,18 @@ import ( "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 diff --git a/vendor/github.com/rancher/wrangler-api/go.mod b/vendor/github.com/rancher/wrangler-api/go.mod index eb48016625..682b048507 100644 --- a/vendor/github.com/rancher/wrangler-api/go.mod +++ b/vendor/github.com/rancher/wrangler-api/go.mod @@ -13,7 +13,7 @@ require ( github.com/knative/build v0.6.0 github.com/knative/pkg v0.0.0-20190514205332-5e4512dcb2ca github.com/mattbaird/jsonpatch v0.0.0-20171005235357-81af80346b1a // indirect - github.com/rancher/wrangler v0.1.3 + github.com/rancher/wrangler v0.1.4 github.com/sirupsen/logrus v1.4.1 k8s.io/api v0.0.0-20190409021203-6e4e0e4f393b k8s.io/apiextensions-apiserver v0.0.0-20190409022649-727a075fdec8 diff --git a/vendor/github.com/rancher/wrangler-api/go.sum b/vendor/github.com/rancher/wrangler-api/go.sum index 16d2c71341..c64897e3ad 100644 --- a/vendor/github.com/rancher/wrangler-api/go.sum +++ b/vendor/github.com/rancher/wrangler-api/go.sum @@ -81,6 +81,8 @@ github.com/rancher/wrangler v0.1.2 h1:+oehkcBDInF6dcnG1ZWczL/tV/c7J8ILP3qEFCme7l github.com/rancher/wrangler v0.1.2/go.mod h1:EYP7cqpg42YqElaCm+U9ieSrGQKAXxUH5xsr+XGpWyE= github.com/rancher/wrangler v0.1.3 h1:WVMLj7kxTOx2pQyAnUKbbFhuFqhAuzkrsSvk37VaYwY= github.com/rancher/wrangler v0.1.3/go.mod h1:EYP7cqpg42YqElaCm+U9ieSrGQKAXxUH5xsr+XGpWyE= +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/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= 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 index 5d7fe91b1a..9f96f8234f 100644 --- 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 @@ -23,12 +23,18 @@ import ( "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 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 index eb1e229603..bc3738ec4a 100644 --- 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 @@ -23,12 +23,18 @@ import ( "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 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 index 37bdd4ff6f..cd8d471d83 100644 --- 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 @@ -23,12 +23,18 @@ import ( "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 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 index 6080c5fd67..5a1dee7f58 100644 --- 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 @@ -23,12 +23,18 @@ import ( "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 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 c211bc65b7..f56a300584 100644 --- a/vendor/github.com/rancher/wrangler/pkg/apply/desiredset_apply.go +++ b/vendor/github.com/rancher/wrangler/pkg/apply/desiredset_apply.go @@ -6,6 +6,8 @@ import ( "fmt" "sync" + gvk2 "github.com/rancher/wrangler/pkg/gvk" + "github.com/pkg/errors" "github.com/rancher/wrangler/pkg/apply/injectors" "github.com/rancher/wrangler/pkg/objectset" @@ -165,10 +167,14 @@ func (o *desiredSet) getLabelsAndAnnotations() (map[string]string, map[string]st } if o.owner != nil { - annotations[LabelGVK] = o.owner.GetObjectKind().GroupVersionKind().String() + gvk, err := gvk2.Get(o.owner) + if err != nil { + return nil, nil, err + } + annotations[LabelGVK] = gvk.String() metadata, err := meta.Accessor(o.owner) if err != nil { - return nil, nil, fmt.Errorf("failed to get metadata for %s", o.owner.GetObjectKind().GroupVersionKind()) + return nil, nil, fmt.Errorf("failed to get metadata for %s", gvk) } annotations[LabelName] = metadata.GetName() annotations[LabelNamespace] = metadata.GetNamespace() diff --git a/vendor/github.com/rancher/wrangler/pkg/apply/desiredset_compare.go b/vendor/github.com/rancher/wrangler/pkg/apply/desiredset_compare.go index 0dca721fcc..13149d13b9 100644 --- a/vendor/github.com/rancher/wrangler/pkg/apply/desiredset_compare.go +++ b/vendor/github.com/rancher/wrangler/pkg/apply/desiredset_compare.go @@ -208,15 +208,19 @@ func getOriginal(obj v1.Object) ([]byte, error) { return []byte("{}"), nil } - mapObj := &unstructured.Unstructured{} - err := json.Unmarshal(original, mapObj) + mapObj := map[string]interface{}{} + err := json.Unmarshal(original, &mapObj) if err != nil { return nil, err } - removeCreationTimestamp(mapObj.Object) + removeCreationTimestamp(mapObj) - objCopy, err := prepareObjectForCreate(mapObj) + u := &unstructured.Unstructured{ + Object: mapObj, + } + + objCopy, err := prepareObjectForCreate(u) if err != nil { return nil, err } 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 1fe796a871..fd71abe360 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 @@ -16,6 +16,7 @@ type Options struct { OutputPackage string Groups map[string]Group Boilerplate string + GenMocks bool } type Group struct { 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 22a2c664c8..aec5180bf3 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,6 +3,7 @@ package generators import ( "fmt" "io" + "path/filepath" args2 "github.com/rancher/wrangler/pkg/controller-gen/args" "k8s.io/gengo/args" @@ -38,7 +39,9 @@ func (f *factory) Imports(*generator.Context) []string { "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), } } @@ -61,6 +64,10 @@ func (f *factory) Init(c *generator.Context, w io.Writer) error { } var factoryBody = ` +func init() { + scheme.AddToScheme(schemes.All) +} + type Factory struct { synced bool informerFactory informers.SharedInformerFactory 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 939414e505..a3ca741cbe 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 @@ -8,6 +8,7 @@ import ( const ( GenericPackage = "github.com/rancher/wrangler/pkg/generic" + AllSchemes = "github.com/rancher/wrangler/pkg/schemes" ) func groupPath(group string) string { 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 3b96553a95..ed82da826b 100644 --- a/vendor/github.com/rancher/wrangler/pkg/controller-gen/main.go +++ b/vendor/github.com/rancher/wrangler/pkg/controller-gen/main.go @@ -104,9 +104,11 @@ func Run(opts cgargs.Options) { logrus.Fatalf("go modules copy failed: %v", err) } - if err := clientGen.GenerateMocks(); err != nil { - logrus.Errorf("mocks failed: %v", err) - return + if opts.GenMocks { + if err := clientGen.GenerateMocks(); err != nil { + logrus.Errorf("mocks failed: %v", err) + return + } } } diff --git a/vendor/github.com/rancher/wrangler/pkg/generic/controller.go b/vendor/github.com/rancher/wrangler/pkg/generic/controller.go index 565c31370b..56bf13dfdf 100644 --- a/vendor/github.com/rancher/wrangler/pkg/generic/controller.go +++ b/vendor/github.com/rancher/wrangler/pkg/generic/controller.go @@ -56,7 +56,6 @@ func NewController(name string, informer cache.SharedIndexInformer, workqueue wo workqueue: workqueue, } - logrus.Info("Setting up event handlers") informer.AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: controller.handleObject, UpdateFunc: func(old, new interface{}) { diff --git a/vendor/github.com/rancher/wrangler/pkg/gvk/get.go b/vendor/github.com/rancher/wrangler/pkg/gvk/get.go new file mode 100644 index 0000000000..75146e7d53 --- /dev/null +++ b/vendor/github.com/rancher/wrangler/pkg/gvk/get.go @@ -0,0 +1,27 @@ +package gvk + +import ( + "fmt" + + "github.com/rancher/wrangler/pkg/schemes" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func Get(obj runtime.Object) (schema.GroupVersionKind, error) { + gvk := obj.GetObjectKind().GroupVersionKind() + if gvk.Kind != "" { + return gvk, nil + } + + gvks, _, err := schemes.All.ObjectKinds(obj) + if err != nil { + return schema.GroupVersionKind{}, err + } + + if len(gvks) == 0 { + return schema.GroupVersionKind{}, fmt.Errorf("failed to find gvk for %v", obj.GetObjectKind()) + } + + return gvks[0], nil +} diff --git a/vendor/github.com/rancher/wrangler/pkg/objectset/objectset.go b/vendor/github.com/rancher/wrangler/pkg/objectset/objectset.go index 7e3c9b0031..c4896938aa 100644 --- a/vendor/github.com/rancher/wrangler/pkg/objectset/objectset.go +++ b/vendor/github.com/rancher/wrangler/pkg/objectset/objectset.go @@ -5,6 +5,8 @@ import ( "reflect" "sort" + "github.com/rancher/wrangler/pkg/gvk" + "github.com/rancher/wrangler/pkg/merr" "k8s.io/apimachinery/pkg/api/meta" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -33,16 +35,21 @@ func (o ObjectKey) String() string { type ObjectByGVK map[schema.GroupVersionKind]map[ObjectKey]runtime.Object -func (o ObjectByGVK) Add(obj runtime.Object) error { +func (o ObjectByGVK) Add(obj runtime.Object) (schema.GroupVersionKind, error) { metadata, err := meta.Accessor(obj) if err != nil { - return err + return schema.GroupVersionKind{}, err } - objs := o[obj.GetObjectKind().GroupVersionKind()] + gvk, err := gvk.Get(obj) + if err != nil { + return schema.GroupVersionKind{}, err + } + + objs := o[gvk] if objs == nil { objs = map[ObjectKey]runtime.Object{} - o[obj.GetObjectKind().GroupVersionKind()] = objs + o[gvk] = objs } objs[ObjectKey{ @@ -50,42 +57,28 @@ func (o ObjectByGVK) Add(obj runtime.Object) error { Name: metadata.GetName(), }] = obj - return nil + return gvk, nil } type ObjectSet struct { - errs []error - objects ObjectByGVK - nsed map[schema.GroupVersionKind]bool - inputs []runtime.Object - order []runtime.Object + errs []error + objects ObjectByGVK + order []runtime.Object + gvkOrder []schema.GroupVersionKind + gvkSeen map[schema.GroupVersionKind]bool } func NewObjectSet() *ObjectSet { return &ObjectSet{ - nsed: map[schema.GroupVersionKind]bool{}, objects: ObjectByGVK{}, + gvkSeen: map[schema.GroupVersionKind]bool{}, } } -func (o *ObjectSet) Inputs() []runtime.Object { - return o.inputs -} - func (o *ObjectSet) ObjectsByGVK() ObjectByGVK { return o.objects } -func (o *ObjectSet) AddInput(objs ...runtime.Object) *ObjectSet { - for _, obj := range objs { - if obj == nil || reflect.ValueOf(obj).IsNil() { - continue - } - o.inputs = append(o.inputs, obj) - } - return o -} - func (o *ObjectSet) Add(objs ...runtime.Object) *ObjectSet { for _, obj := range objs { o.add(obj) @@ -98,34 +91,17 @@ func (o *ObjectSet) add(obj runtime.Object) { return } - gvk := obj.GetObjectKind().GroupVersionKind() - - metadata, err := meta.Accessor(obj) + gvk, err := o.objects.Add(obj) if err != nil { - o.err(fmt.Errorf("failed to get metadata for %s", gvk)) - return - } - - name := metadata.GetName() - if name == "" { - o.err(fmt.Errorf("%s is missing name", gvk)) - return - } - - namespace := metadata.GetNamespace() - nsed, ok := o.nsed[gvk] - if ok && nsed != (namespace != "") { - o.err(fmt.Errorf("got %s objects that are both namespaced and not namespaced", gvk)) - return - } - o.nsed[gvk] = namespace != "" - - if err := o.objects.Add(obj); err != nil { - o.err(fmt.Errorf("failed to get metadata for %s", gvk)) + o.err(fmt.Errorf("failed to add %v", obj)) return } o.order = append(o.order, obj) + if !o.gvkSeen[gvk] { + o.gvkSeen[gvk] = true + o.gvkOrder = append(o.gvkOrder, gvk) + } } func (o *ObjectSet) err(err error) error { @@ -146,25 +122,12 @@ func (o *ObjectSet) Len() int { } func (o *ObjectSet) GVKOrder(known ...schema.GroupVersionKind) []schema.GroupVersionKind { - seen := map[schema.GroupVersionKind]bool{} - var gvkOrder []schema.GroupVersionKind - - for _, obj := range o.order { - if seen[obj.GetObjectKind().GroupVersionKind()] { - continue - } - seen[obj.GetObjectKind().GroupVersionKind()] = true - gvkOrder = append(gvkOrder, obj.GetObjectKind().GroupVersionKind()) - } - var rest []schema.GroupVersionKind for _, gvk := range known { - if seen[gvk] { + if o.gvkSeen[gvk] { continue } - - seen[gvk] = true rest = append(rest, gvk) } @@ -172,5 +135,5 @@ func (o *ObjectSet) GVKOrder(known ...schema.GroupVersionKind) []schema.GroupVer return rest[i].String() < rest[j].String() }) - return append(gvkOrder, rest...) + return append(o.gvkOrder, rest...) } diff --git a/vendor/github.com/rancher/wrangler/pkg/schemes/all.go b/vendor/github.com/rancher/wrangler/pkg/schemes/all.go new file mode 100644 index 0000000000..8e64b5ca9f --- /dev/null +++ b/vendor/github.com/rancher/wrangler/pkg/schemes/all.go @@ -0,0 +1,7 @@ +package schemes + +import ( + "k8s.io/apimachinery/pkg/runtime" +) + +var All = runtime.NewScheme()