Skip to content

Commit

Permalink
Merge pull request #3018 from mjudeikis/crd.built.in
Browse files Browse the repository at this point in the history
✨  Add CRDs to built-in types
  • Loading branch information
kcp-ci-bot authored Oct 16, 2023
2 parents 2f76cac + bb058ec commit 5fcd442
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 7 deletions.
5 changes: 4 additions & 1 deletion pkg/crdpuller/discovery.go
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,10 @@ func (sc *SchemaConverter) VisitKind(k *proto.Kind) {
}

func (sc *SchemaConverter) VisitReference(r proto.Reference) {
reference := r.Reference()
reference := r.Reference() // recursive CRDs are not supported
if reference == "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" {
return
}
if sc.visited.Has(reference) {
*sc.errors = append(*sc.errors, fmt.Errorf("recursive schema are not supported: %s", reference))
return
Expand Down
8 changes: 2 additions & 6 deletions pkg/informer/informer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ limitations under the License.
package informer

import (
"reflect"
"strings"
"testing"

Expand Down Expand Up @@ -84,6 +83,7 @@ func TestBuiltInInformableTypes(t *testing.T) {
{Group: "authorization.k8s.io", Version: "v1", Kind: "SelfSubjectAccessReview"}: {},
{Group: "authorization.k8s.io", Version: "v1", Kind: "SelfSubjectRulesReview"}: {},
{Group: "authorization.k8s.io", Version: "v1", Kind: "SubjectAccessReview"}: {},
{Group: "apiextensions.k8s.io", Version: "v1", Kind: "ConversionReview"}: {},
}

gvsToIgnore := map[schema.GroupVersion]struct{}{
Expand All @@ -92,6 +92,7 @@ func TestBuiltInInformableTypes(t *testing.T) {

// These are alpha/beta versions that are not preferred (they all have v1)
{Group: "admissionregistration.k8s.io", Version: "v1beta1"}: {},
{Group: "apiextensions.k8s.io", Version: "v1beta1"}: {},
{Group: "authentication.k8s.io", Version: "v1beta1"}: {},
{Group: "authorization.k8s.io", Version: "v1beta1"}: {},
{Group: "certificates.k8s.io", Version: "v1alpha1"}: {},
Expand All @@ -103,11 +104,6 @@ func TestBuiltInInformableTypes(t *testing.T) {
}

allKnownTypes := kcpscheme.Scheme.AllKnownTypes()

// CRDs are not included in the genericcontrolplane scheme (because they're part of the apiextensions apiserver),
// so we have to manually add them
allKnownTypes[schema.GroupVersionKind{Group: "apiextensions.k8s.io", Version: "v1", Kind: "CustomResourceDefinition"}] = reflect.TypeOf(struct{}{})

for gvk := range allKnownTypes {
if kindsToIgnore.Has(gvk.Kind) {
continue
Expand Down
2 changes: 2 additions & 0 deletions pkg/server/scheme/scheme.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ limitations under the License.
package scheme

import (
apiextensionsinstall "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
admissionregistrationinstall "k8s.io/kubernetes/pkg/apis/admissionregistration/install"
Expand All @@ -33,6 +34,7 @@ func init() {
install.Install(Scheme)
authenticationinstall.Install(Scheme)
authorizationinstall.Install(Scheme)
apiextensionsinstall.Install(Scheme)
certificatesinstall.Install(Scheme)
coordinationinstall.Install(Scheme)
rbacinstall.Install(Scheme)
Expand Down
11 changes: 11 additions & 0 deletions pkg/virtual/apiexport/schemas/builtin/builtin.go
Original file line number Diff line number Diff line change
Expand Up @@ -255,4 +255,15 @@ var BuiltInAPIs = []internalapis.InternalAPI{
Instance: &admissionregistrationv1alpha1.ValidatingAdmissionPolicyBinding{},
ResourceScope: apiextensionsv1.ClusterScoped,
},
{
Names: apiextensionsv1.CustomResourceDefinitionNames{
Plural: "customresourcedefinitions",
Singular: "customresourcedefinition",
Kind: "CustomResourceDefinition",
},
GroupVersion: schema.GroupVersion{Group: "apiextensions.k8s.io", Version: "v1"},
Instance: &apiextensionsv1.CustomResourceDefinition{},
ResourceScope: apiextensionsv1.ClusterScoped,
HasStatus: true,
},
}

0 comments on commit 5fcd442

Please sign in to comment.