1
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
56 GroupVersion = schema.GroupVersion{Group: core.GroupName, Version: ApiLatestVersion}
57 SchemeGroupVersion = schema.GroupVersion{Group: core.GroupName, Version: ApiLatestVersion}
58
59
60 StorageGroupVersion = schema.GroupVersion{Group: core.GroupName, Version: ApiStorageVersion}
61
62
63
64 GroupVersions = []schema.GroupVersion{{Group: core.GroupName, Version: "v1"}, {Group: core.GroupName, Version: "v1alpha3"}}
65
66
67
68 SubresourceGroupVersions = []schema.GroupVersion{{Group: SubresourceGroupName, Version: ApiLatestVersion}, {Group: SubresourceGroupName, Version: "v1alpha3"}}
69
70
71 SubresourceStorageGroupVersion = schema.GroupVersion{Group: SubresourceGroupName, Version: ApiStorageVersion}
72 )
73
74 var (
75
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
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
117 func Resource(resource string) schema.GroupResource {
118 return GroupVersion.WithResource(resource).GroupResource()
119 }
120
121
122 func Kind(kind string) schema.GroupKind {
123 return SchemeGroupVersion.WithKind(kind).GroupKind()
124 }
125
View as plain text