3eaacc01ae
- update k8s client_go - update k8s apiextensions-apiserver - update k8s controller-tools Signed-off-by: leonnicolas <leonloechner@gmx.de>
44 lines
1.7 KiB
Go
44 lines
1.7 KiB
Go
package crd
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
apiextinternal "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
|
|
apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
|
apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
)
|
|
|
|
var (
|
|
conversionScheme = runtime.NewScheme()
|
|
)
|
|
|
|
func init() {
|
|
if err := apiextinternal.AddToScheme(conversionScheme); err != nil {
|
|
panic("must be able to add internal apiextensions to the CRD conversion Scheme")
|
|
}
|
|
if err := apiext.AddToScheme(conversionScheme); err != nil {
|
|
panic("must be able to add apiextensions/v1 to the CRD conversion Scheme")
|
|
}
|
|
}
|
|
|
|
// AsVersion converts a CRD from the canonical internal form (currently v1) to some external form.
|
|
func AsVersion(original apiext.CustomResourceDefinition, gv schema.GroupVersion) (runtime.Object, error) {
|
|
// TODO: Do we need to keep maintaining this conversion function
|
|
// post 1.22 when only CRDv1 is served by the apiserver?
|
|
if gv == apiextv1beta1.SchemeGroupVersion {
|
|
return nil, fmt.Errorf("apiVersion %q is not supported", gv.String())
|
|
}
|
|
// We can use the internal versions an existing conversions from kubernetes, since they're not in k/k itself.
|
|
// This punts the problem of conversion down the road for a future maintainer (or future instance of @directxman12)
|
|
// when we have to support older versions that get removed, or when API machinery decides to yell at us for this
|
|
// questionable decision.
|
|
intVer, err := conversionScheme.ConvertToVersion(&original, apiextinternal.SchemeGroupVersion)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("unable to convert to internal CRD version: %w", err)
|
|
}
|
|
|
|
return conversionScheme.ConvertToVersion(intVer, gv)
|
|
}
|