1
0
mirror of https://github.com/rancher/steve.git synced 2025-07-06 03:26:35 +00:00

Merge pull request #253 from MbolotSuse/schema-less

Handle Schema-less CRDs
This commit is contained in:
Michael Bolot 2024-08-05 14:43:53 -05:00 committed by GitHub
commit 1d42891f81
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 63 additions and 2 deletions

View File

@ -63,6 +63,26 @@ spec:
nullable: true
served: true
storage: true
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: schemaless.management.cattle.io
spec:
conversion:
strategy: None
group: management.cattle.io
names:
kind: Schemaless
listKind: SchemalessList
plural: schemalese
singular: schemaless
scope: Cluster
preserveUnkownFields: true
versions:
- name: v2
served: true
storage: true
`
)
@ -346,6 +366,35 @@ definitions:
- group: "management.cattle.io"
version: "v2"
kind: "Nullable"
io.cattle.management.v2.Schemaless:
description: "this kind has no schema"
type: "object"
properties:
apiVersion:
description: "The APIVersion of this resource"
type: "string"
kind:
description: "The kind"
type: "string"
metadata:
description: "The metadata"
$ref: "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"
spec:
description: "The spec for the resource"
type: "object"
required:
- "name"
properties:
name:
description: "The name of the resource"
type: "string"
notRequired:
description: "Some field that isn't required"
type: "boolean"
x-kubernetes-group-version-kind:
- group: "management.cattle.io"
version: "v2"
kind: "Schemaless"
io.cattle.management.NotAKind:
type: "string"
description: "Some string which isn't a kind"

View File

@ -223,7 +223,9 @@ func listGVKModels(models proto.Models, groups *metav1.APIGroupList, crdCache wa
Version: version.Name,
Kind: crd.Spec.Names.Kind,
}
gvkToCRD[gvk] = version.Schema.OpenAPIV3Schema
if version.Schema != nil {
gvkToCRD[gvk] = version.Schema.OpenAPIV3Schema
}
}
}

View File

@ -34,7 +34,7 @@ func TestRefresh(t *testing.T) {
require.NotNil(t, userAttributesV2)
nullableV2 := getJSONSchema(crds, "nullable.management.cattle.io", "v2")
require.NotNil(t, userAttributesV2)
require.NotNil(t, nullableV2)
tests := []struct {
name string
@ -85,6 +85,11 @@ func TestRefresh(t *testing.T) {
Schema: defaultModels.LookupModel("io.cattle.management.v2.Nullable"),
CRD: nullableV2,
},
"management.cattle.io.schemaless": {
ModelName: "io.cattle.management.v2.Schemaless",
Schema: defaultModels.LookupModel("io.cattle.management.v2.Schemaless"),
CRD: nil,
},
},
},
{
@ -147,6 +152,11 @@ func TestRefresh(t *testing.T) {
Schema: defaultModels.LookupModel("io.cattle.management.v2.Nullable"),
CRD: nullableV2,
},
"management.cattle.io.schemaless": {
ModelName: "io.cattle.management.v2.Schemaless",
Schema: defaultModels.LookupModel("io.cattle.management.v2.Schemaless"),
CRD: nil,
},
},
},
}