kubevirt.io/api@v1.2.0/core/v1/register.go (about) 1 /* 2 * This file is part of the KubeVirt project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 * 16 * Copyright 2019 Red Hat, Inc. 17 * 18 */ 19 package v1 20 21 import ( 22 extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" 23 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 24 "k8s.io/apimachinery/pkg/runtime" 25 "k8s.io/apimachinery/pkg/runtime/schema" 26 "k8s.io/utils/pointer" 27 28 "kubevirt.io/api/core" 29 ) 30 31 const SubresourceGroupName = "subresources.kubevirt.io" 32 const KubeVirtClientGoSchemeRegistrationVersionEnvVar = "KUBEVIRT_CLIENT_GO_SCHEME_REGISTRATION_VERSION" 33 34 var ( 35 ApiLatestVersion = "v1" 36 ApiSupportedWebhookVersions = []string{"v1alpha3", "v1"} 37 ApiStorageVersion = "v1" 38 ApiSupportedVersions = []extv1.CustomResourceDefinitionVersion{ 39 { 40 Name: "v1", 41 Served: true, 42 Storage: true, 43 }, 44 { 45 Name: "v1alpha3", 46 Served: true, 47 Storage: false, 48 Deprecated: true, 49 DeprecationWarning: pointer.String("kubevirt.io/v1alpha3 is now deprecated and will be removed in a future release."), 50 }, 51 } 52 ) 53 54 var ( 55 // GroupVersion is the latest group version for the KubeVirt api 56 GroupVersion = schema.GroupVersion{Group: core.GroupName, Version: ApiLatestVersion} 57 SchemeGroupVersion = schema.GroupVersion{Group: core.GroupName, Version: ApiLatestVersion} 58 59 // StorageGroupVersion is the group version our api is persistented internally as 60 StorageGroupVersion = schema.GroupVersion{Group: core.GroupName, Version: ApiStorageVersion} 61 62 // GroupVersions is group version list used to register these objects 63 // The preferred group version is the first item in the list. 64 GroupVersions = []schema.GroupVersion{{Group: core.GroupName, Version: "v1"}, {Group: core.GroupName, Version: "v1alpha3"}} 65 66 // SubresourceGroupVersions is group version list used to register these objects 67 // The preferred group version is the first item in the list. 68 SubresourceGroupVersions = []schema.GroupVersion{{Group: SubresourceGroupName, Version: ApiLatestVersion}, {Group: SubresourceGroupName, Version: "v1alpha3"}} 69 70 // SubresourceStorageGroupVersion is the group version our api is persistented internally as 71 SubresourceStorageGroupVersion = schema.GroupVersion{Group: SubresourceGroupName, Version: ApiStorageVersion} 72 ) 73 74 var ( 75 // GroupVersionKind 76 VirtualMachineInstanceGroupVersionKind = schema.GroupVersionKind{Group: core.GroupName, Version: GroupVersion.Version, Kind: "VirtualMachineInstance"} 77 VirtualMachineInstanceReplicaSetGroupVersionKind = schema.GroupVersionKind{Group: core.GroupName, Version: GroupVersion.Version, Kind: "VirtualMachineInstanceReplicaSet"} 78 VirtualMachineInstancePresetGroupVersionKind = schema.GroupVersionKind{Group: core.GroupName, Version: GroupVersion.Version, Kind: "VirtualMachineInstancePreset"} 79 VirtualMachineGroupVersionKind = schema.GroupVersionKind{Group: core.GroupName, Version: GroupVersion.Version, Kind: "VirtualMachine"} 80 VirtualMachineInstanceMigrationGroupVersionKind = schema.GroupVersionKind{Group: core.GroupName, Version: GroupVersion.Version, Kind: "VirtualMachineInstanceMigration"} 81 KubeVirtGroupVersionKind = schema.GroupVersionKind{Group: core.GroupName, Version: GroupVersion.Version, Kind: "KubeVirt"} 82 ) 83 84 var ( 85 SchemeBuilder = runtime.NewSchemeBuilder(AddKnownTypesGenerator([]schema.GroupVersion{GroupVersion})) 86 AddToScheme = SchemeBuilder.AddToScheme 87 ) 88 89 func AddKnownTypesGenerator(groupVersions []schema.GroupVersion) func(scheme *runtime.Scheme) error { 90 91 // Adds the list of known types to api.Scheme. 92 return func(scheme *runtime.Scheme) error { 93 94 for _, groupVersion := range groupVersions { 95 scheme.AddKnownTypes(groupVersion, 96 &VirtualMachineInstance{}, 97 &VirtualMachineInstanceList{}, 98 &VirtualMachineInstanceReplicaSet{}, 99 &VirtualMachineInstanceReplicaSetList{}, 100 &VirtualMachineInstancePreset{}, 101 &VirtualMachineInstancePresetList{}, 102 &VirtualMachineInstanceMigration{}, 103 &VirtualMachineInstanceMigrationList{}, 104 &VirtualMachine{}, 105 &VirtualMachineList{}, 106 &KubeVirt{}, 107 &KubeVirtList{}, 108 ) 109 metav1.AddToGroupVersion(scheme, groupVersion) 110 } 111 112 return nil 113 } 114 } 115 116 // Resource takes an unqualified resource and returns a Group qualified GroupResource 117 func Resource(resource string) schema.GroupResource { 118 return GroupVersion.WithResource(resource).GroupResource() 119 } 120 121 // Kind takes an unqualified kind and returns back a Group qualified GroupKind 122 func Kind(kind string) schema.GroupKind { 123 return SchemeGroupVersion.WithKind(kind).GroupKind() 124 }