From 6cfcc4e58d6c56a6fc2f6fb8e03ed56d31a47753 Mon Sep 17 00:00:00 2001 From: leonnicolas Date: Wed, 2 Jun 2021 13:29:23 +0200 Subject: [PATCH] pkg/k8s/backend.go: use apiextensions/v1 --- go.mod | 2 +- go.sum | 6 ++- pkg/k8s/backend.go | 15 +++++--- .../crd-validation/LICENSE | 0 .../crd-validation/pkg/cli-utils.go | 37 ++++++++++--------- .../crd-validation/pkg/convert_types.go | 3 +- .../crd-validation/pkg/crdvalidation.go | 5 +-- vendor/modules.txt | 6 +-- 8 files changed, 41 insertions(+), 33 deletions(-) rename vendor/github.com/{ant31 => leonnicolas}/crd-validation/LICENSE (100%) rename vendor/github.com/{ant31 => leonnicolas}/crd-validation/pkg/cli-utils.go (87%) rename vendor/github.com/{ant31 => leonnicolas}/crd-validation/pkg/convert_types.go (99%) rename vendor/github.com/{ant31 => leonnicolas}/crd-validation/pkg/crdvalidation.go (97%) diff --git a/go.mod b/go.mod index f26f413..106322e 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,6 @@ module github.com/squat/kilo go 1.15 require ( - github.com/ant31/crd-validation v0.0.0-20180801212718-38f6a293f140 github.com/awalterschulze/gographviz v0.0.0-20181013152038-b2885df04310 github.com/campoy/embedmd v1.0.0 github.com/containernetworking/cni v0.6.0 @@ -14,6 +13,7 @@ require ( github.com/go-openapi/spec v0.19.5 github.com/imdario/mergo v0.3.6 // indirect github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 + github.com/leonnicolas/crd-validation v0.0.0-20210602093346-4236c21fcd92 github.com/oklog/run v1.0.0 github.com/prometheus/client_golang v1.7.1 github.com/spf13/cobra v1.1.1 diff --git a/go.sum b/go.sum index 75a57b0..806a8f0 100644 --- a/go.sum +++ b/go.sum @@ -43,8 +43,6 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/ant31/crd-validation v0.0.0-20180801212718-38f6a293f140 h1:ljF9TLBK+JYXKB8aklLhcubPDBUjpvzWKiqgZ37s+QY= -github.com/ant31/crd-validation v0.0.0-20180801212718-38f6a293f140/go.mod h1:X0noFIik9YqfhGYBLEHg8LJKEwy7QIitLQuFMpKLcPk= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -258,6 +256,10 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/leonnicolas/crd-validation v0.0.0-20210601171249-de84deb9584e h1:tvtcs1K8lD5OkB8NyibdP1adEiwTkdc64uF+SLCl+rI= +github.com/leonnicolas/crd-validation v0.0.0-20210601171249-de84deb9584e/go.mod h1:CAR0fVjRp8CDdr5dz8bRqHlin8K3wL0ZRyYyWTju4MM= +github.com/leonnicolas/crd-validation v0.0.0-20210602093346-4236c21fcd92 h1:FJZdDGBUAH+ToDazE5vSoASB3UBW8wRz5+A12fqAX9E= +github.com/leonnicolas/crd-validation v0.0.0-20210602093346-4236c21fcd92/go.mod h1:CAR0fVjRp8CDdr5dz8bRqHlin8K3wL0ZRyYyWTju4MM= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= 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= diff --git a/pkg/k8s/backend.go b/pkg/k8s/backend.go index 1883d15..ce47e2b 100644 --- a/pkg/k8s/backend.go +++ b/pkg/k8s/backend.go @@ -25,9 +25,9 @@ import ( "strings" "time" - crdutils "github.com/ant31/crd-validation/pkg" + crdutils "github.com/leonnicolas/crd-validation/pkg" v1 "k8s.io/api/core/v1" - "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" + extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" apiextensions "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -417,7 +417,7 @@ func (pb *peerBackend) Init(stop <-chan struct{}) error { crd := crdutils.NewCustomResourceDefinition(crdutils.Config{ SpecDefinitionName: "github.com/squat/kilo/pkg/k8s/apis/kilo/v1alpha1.Peer", EnableValidation: true, - ResourceScope: string(v1beta1.ClusterScoped), + ResourceScope: string(extv1.ClusterScoped), Group: v1alpha1.GroupName, Kind: v1alpha1.PeerKind, Version: v1alpha1.SchemeGroupVersion.Version, @@ -425,10 +425,13 @@ func (pb *peerBackend) Init(stop <-chan struct{}) error { ShortNames: v1alpha1.PeerShortNames, GetOpenAPIDefinitions: v1alpha1.GetOpenAPIDefinitions, }) - crd.Spec.Subresources.Scale = nil - crd.Spec.Subresources.Status = nil + for _, v := range crd.Spec.Versions { + v.Subresources.Scale = nil + v.Subresources.Status = nil + v.Schema.OpenAPIV3Schema.Type = "object" + } - _, err := pb.extensionsClient.ApiextensionsV1beta1().CustomResourceDefinitions().Create(context.TODO(), crd, metav1.CreateOptions{}) + _, err := pb.extensionsClient.ApiextensionsV1().CustomResourceDefinitions().Create(context.TODO(), crd, metav1.CreateOptions{}) if err != nil && !apierrors.IsAlreadyExists(err) { return fmt.Errorf("failed to create CRD: %v", err) } diff --git a/vendor/github.com/ant31/crd-validation/LICENSE b/vendor/github.com/leonnicolas/crd-validation/LICENSE similarity index 100% rename from vendor/github.com/ant31/crd-validation/LICENSE rename to vendor/github.com/leonnicolas/crd-validation/LICENSE diff --git a/vendor/github.com/ant31/crd-validation/pkg/cli-utils.go b/vendor/github.com/leonnicolas/crd-validation/pkg/cli-utils.go similarity index 87% rename from vendor/github.com/ant31/crd-validation/pkg/cli-utils.go rename to vendor/github.com/leonnicolas/crd-validation/pkg/cli-utils.go index 16d5ccf..8e8fc39 100644 --- a/vendor/github.com/ant31/crd-validation/pkg/cli-utils.go +++ b/vendor/github.com/leonnicolas/crd-validation/pkg/cli-utils.go @@ -21,7 +21,7 @@ import ( "strings" "github.com/ghodss/yaml" - extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" + extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) @@ -86,6 +86,7 @@ func (labels *Labels) Set(value string) error { } func NewCustomResourceDefinition(config Config) *extensionsobj.CustomResourceDefinition { + schema := GetCustomResourceValidation(config.SpecDefinitionName, config.GetOpenAPIDefinitions) crd := &extensionsobj.CustomResourceDefinition{ ObjectMeta: metav1.ObjectMeta{ @@ -95,31 +96,33 @@ func NewCustomResourceDefinition(config Config) *extensionsobj.CustomResourceDef }, TypeMeta: CustomResourceDefinitionTypeMeta, Spec: extensionsobj.CustomResourceDefinitionSpec{ - Group: config.Group, - Version: config.Version, - Scope: extensionsobj.ResourceScope(config.ResourceScope), + Group: config.Group, + Versions: []extensionsobj.CustomResourceDefinitionVersion{ + { + Name: config.Version, + Schema: schema, + Subresources: &extensionsobj.CustomResourceSubresources{ + Status: &extensionsobj.CustomResourceSubresourceStatus{}, + Scale: &extensionsobj.CustomResourceSubresourceScale{ + SpecReplicasPath: config.SpecReplicasPath, + StatusReplicasPath: config.StatusReplicasPath, + LabelSelectorPath: &config.LabelSelectorPath, + }, + }, + Served: true, + Storage: true, + }, + }, + Scope: extensionsobj.ResourceScope(config.ResourceScope), Names: extensionsobj.CustomResourceDefinitionNames{ Plural: config.Plural, Kind: config.Kind, Categories: config.Categories, ShortNames: config.ShortNames, }, - Subresources: &extensionsobj.CustomResourceSubresources{ - Status: &extensionsobj.CustomResourceSubresourceStatus { - }, - Scale: &extensionsobj.CustomResourceSubresourceScale { - SpecReplicasPath: config.SpecReplicasPath, - StatusReplicasPath: config.StatusReplicasPath, - LabelSelectorPath: &config.LabelSelectorPath, - }, - }, }, } - if config.SpecDefinitionName != "" && config.EnableValidation == true { - crd.Spec.Validation = GetCustomResourceValidation(config.SpecDefinitionName, config.GetOpenAPIDefinitions) - } - return crd } diff --git a/vendor/github.com/ant31/crd-validation/pkg/convert_types.go b/vendor/github.com/leonnicolas/crd-validation/pkg/convert_types.go similarity index 99% rename from vendor/github.com/ant31/crd-validation/pkg/convert_types.go rename to vendor/github.com/leonnicolas/crd-validation/pkg/convert_types.go index 1411de7..17a4c17 100644 --- a/vendor/github.com/ant31/crd-validation/pkg/convert_types.go +++ b/vendor/github.com/leonnicolas/crd-validation/pkg/convert_types.go @@ -2,8 +2,9 @@ package crdvalidation import ( "fmt" + spec "github.com/go-openapi/spec" - extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" + extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" common "k8s.io/kube-openapi/pkg/common" ) diff --git a/vendor/github.com/ant31/crd-validation/pkg/crdvalidation.go b/vendor/github.com/leonnicolas/crd-validation/pkg/crdvalidation.go similarity index 97% rename from vendor/github.com/ant31/crd-validation/pkg/crdvalidation.go rename to vendor/github.com/leonnicolas/crd-validation/pkg/crdvalidation.go index 03c51c8..ccf5078 100644 --- a/vendor/github.com/ant31/crd-validation/pkg/crdvalidation.go +++ b/vendor/github.com/leonnicolas/crd-validation/pkg/crdvalidation.go @@ -2,7 +2,7 @@ package crdvalidation import ( spec "github.com/go-openapi/spec" - extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" + extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" common "k8s.io/kube-openapi/pkg/common" ) @@ -10,7 +10,7 @@ import ( // CustomResourceDefinitionTypeMeta set the default kind/apiversion of CRD var CustomResourceDefinitionTypeMeta = metav1.TypeMeta{ Kind: "CustomResourceDefinition", - APIVersion: "apiextensions.k8s.io/v1beta1", + APIVersion: "apiextensions.k8s.io/v1", } // OpenAPIRefCallBack returns a jsonref using the input string without modification @@ -69,4 +69,3 @@ func fixKnownTypes(openapiSpec map[string]common.OpenAPIDefinition) { }, } } - diff --git a/vendor/modules.txt b/vendor/modules.txt index deea2b7..b6bbc16 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -2,9 +2,6 @@ github.com/PuerkitoBio/purell # github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 github.com/PuerkitoBio/urlesc -# github.com/ant31/crd-validation v0.0.0-20180801212718-38f6a293f140 -## explicit -github.com/ant31/crd-validation/pkg # github.com/awalterschulze/gographviz v0.0.0-20181013152038-b2885df04310 ## explicit github.com/awalterschulze/gographviz @@ -104,6 +101,9 @@ github.com/kr/logfmt ## explicit github.com/kylelemons/godebug/diff github.com/kylelemons/godebug/pretty +# github.com/leonnicolas/crd-validation v0.0.0-20210602093346-4236c21fcd92 +## explicit +github.com/leonnicolas/crd-validation/pkg # github.com/mailru/easyjson v0.7.0 github.com/mailru/easyjson/buffer github.com/mailru/easyjson/jlexer