mirror of
https://github.com/argoproj/argo-cd.git
synced 2026-02-20 01:28:45 +01:00
29 lines
1011 B
Go
29 lines
1011 B
Go
package kube
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
|
|
"github.com/argoproj/argo-cd/gitops-engine/pkg/utils/kube/scheme"
|
|
)
|
|
|
|
func convertToVersionWithScheme(obj *unstructured.Unstructured, group string, version string) (*unstructured.Unstructured, error) {
|
|
s := scheme.Scheme
|
|
object, err := s.ConvertToVersion(obj, runtime.InternalGroupVersioner)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to convert to version using internal group versioner: %w", err)
|
|
}
|
|
unmarshalledObj, err := s.ConvertToVersion(object, schema.GroupVersion{Group: group, Version: version})
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to convert to version: %w", err)
|
|
}
|
|
unstrBody, err := runtime.DefaultUnstructuredConverter.ToUnstructured(unmarshalledObj)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to convert to unstructured object: %w", err)
|
|
}
|
|
return &unstructured.Unstructured{Object: unstrBody}, nil
|
|
}
|