...

Source file src/kubevirt.io/api/core/v1/register.go

Documentation: kubevirt.io/api/core/v1

     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  }
   125  

View as plain text