pkg/k8scontext/convert/conversion_ingress.go (47 lines of code) (raw):

package convert import ( multiClusterIngress "github.com/Azure/application-gateway-kubernetes-ingress/pkg/apis/multiclusteringress/v1alpha1" extensionsv1beta1 "k8s.io/api/extensions/v1beta1" networkingv1 "k8s.io/api/networking/v1" "k8s.io/klog/v2" ) func fromExtensions(old *extensionsv1beta1.Ingress) (*networkingv1.Ingress, error) { v1Ing := &networkingv1.Ingress{} err := Convert_v1beta1_Ingress_To_networking_Ingress(old, v1Ing, nil) v1Ing.APIVersion = networkingv1.SchemeGroupVersion.String() v1Ing.Kind = "Ingress" return v1Ing, err } // ToIngressV1 converts to V1 ingress func ToIngressV1(obj interface{}) (*networkingv1.Ingress, bool) { oldVersion, inExtension := obj.(*extensionsv1beta1.Ingress) if inExtension { ing, err := fromExtensions(oldVersion) if err != nil { klog.Errorf("unexpected error converting Ingress from extensions package: %v", err) return nil, false } return ing, true } if ing, ok := obj.(*networkingv1.Ingress); ok { return ing, true } return nil, false } // FromMultiClusterIngress converts MultiClusterIngress CRD into neworking.k8s.io/v1/Ingress func FromMultiClusterIngress(mci *multiClusterIngress.MultiClusterIngress) (*networkingv1.Ingress, bool) { if mci == nil { klog.Errorf("Unexpected, attempted converting nil MultiClusterIngresss to Ingress") return nil, false } v1Ing := &networkingv1.Ingress{} // remove last applied config, object model does not match for k := range mci.ObjectMeta.Annotations { if k == "kubectl.kubernetes.io/last-applied-configuration" { delete(mci.ObjectMeta.Annotations, k) } } mci.ObjectMeta.DeepCopyInto(&v1Ing.ObjectMeta) mci.Spec.Template.DeepCopyInto(&v1Ing.Spec) mci.Status.DeepCopyInto(&v1Ing.Status) v1Ing.APIVersion = networkingv1.SchemeGroupVersion.String() v1Ing.Kind = "Ingress" return v1Ing, true }