package crds import ( monov1alpha1 "example.com/monok8s/pkg/apis/monok8s/v1alpha1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) func Definitions() []*apiextensionsv1.CustomResourceDefinition { return []*apiextensionsv1.CustomResourceDefinition{ monoKSConfigCRD(), osUpgradeCRD(), } } func monoKSConfigCRD() *apiextensionsv1.CustomResourceDefinition { return &apiextensionsv1.CustomResourceDefinition{ ObjectMeta: metav1.ObjectMeta{ Name: monov1alpha1.MonoKSConfigCRD, }, Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Group: monov1alpha1.Group, Scope: apiextensionsv1.NamespaceScoped, Names: apiextensionsv1.CustomResourceDefinitionNames{ Plural: "monoksconfigs", Singular: "monoksconfig", Kind: "MonoKSConfig", ShortNames: []string{"mkscfg"}, }, Versions: []apiextensionsv1.CustomResourceDefinitionVersion{{ Name: "v1alpha1", Served: true, Storage: true, Schema: &apiextensionsv1.CustomResourceValidation{OpenAPIV3Schema: &apiextensionsv1.JSONSchemaProps{ Type: "object", Properties: map[string]apiextensionsv1.JSONSchemaProps{ "spec": {Type: "object", XPreserveUnknownFields: boolPtr(true)}, "status": {Type: "object", XPreserveUnknownFields: boolPtr(true)}, }, }}, }}, }, } } func osUpgradeCRD() *apiextensionsv1.CustomResourceDefinition { return &apiextensionsv1.CustomResourceDefinition{ ObjectMeta: metav1.ObjectMeta{ Name: monov1alpha1.OSUpgradeCRD, }, Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Group: monov1alpha1.Group, Scope: apiextensionsv1.NamespaceScoped, Names: apiextensionsv1.CustomResourceDefinitionNames{ Plural: "osupgrades", Singular: "osupgrade", Kind: "OSUpgrade", ShortNames: []string{"osup"}, }, Versions: []apiextensionsv1.CustomResourceDefinitionVersion{{ Name: "v1alpha1", Served: true, Storage: true, Schema: &apiextensionsv1.CustomResourceValidation{OpenAPIV3Schema: &apiextensionsv1.JSONSchemaProps{ Type: "object", Properties: map[string]apiextensionsv1.JSONSchemaProps{ "spec": {Type: "object", XPreserveUnknownFields: boolPtr(true)}, "status": {Type: "object", XPreserveUnknownFields: boolPtr(true)}, }, }}, }}, }, } } func boolPtr(v bool) *bool { return &v }