penguin/monok8s

k8s image for Mono Gateway Dev Kit

clitools/pkg/crds/crds.go

raw ยท 2330 bytes

package crds

import (
	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: "monoksconfigs.monok8s.io"},
		Spec: apiextensionsv1.CustomResourceDefinitionSpec{
			Group: "monok8s.io",
			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: "osupgrades.monok8s.io"},
		Spec: apiextensionsv1.CustomResourceDefinitionSpec{
			Group: "monok8s.io",
			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 }