Files
paralus/pkg/converter/import.go
2024-04-25 12:16:15 +05:30

75 lines
1.6 KiB
Go

package converter
import (
"errors"
"fmt"
"strings"
runtimeutil "github.com/paralus/paralus/pkg/controller/runtime"
"github.com/paralus/paralus/pkg/log"
controllerv2 "github.com/paralus/paralus/proto/types/controller"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
k8sapijson "sigs.k8s.io/kustomize/pseudo/k8s/apimachinery/pkg/runtime/serializer/json"
)
var (
// ErrInvalidObject is retuned for invalid object
ErrInvalidObject = errors.New("object does not support object interface")
json = k8sapijson.CaseSensitiveJsonIterator()
)
var _log = log.GetLogger()
// toRuntimeObject converts JSON bytes into runtime object of
// latest version
func toRuntimeObject(gvk schema.GroupVersionKind, b []byte) (runtime.Object, error) {
var sa controllerv2.StepObject
err := json.Unmarshal(b, &sa)
if err != nil {
return nil, err
}
ro, _, err := runtimeutil.ToObject(&sa)
if err != nil {
return nil, err
}
return ro, nil
}
func toStepTemplate(o runtime.Object) (controllerv2.StepTemplate, error) {
so, err := runtimeutil.FromObject(o)
if err != nil {
return controllerv2.StepTemplate{}, err
}
return stepObjectToStepTemplate(*so)
}
func stepObjectToStepTemplate(so controllerv2.StepObject) (controllerv2.StepTemplate, error) {
var st controllerv2.StepTemplate
accessor, err := so.Accessor()
if err != nil {
return st, err
}
gvk, err := accessor.GroupVersionKind()
if err != nil {
return st, err
}
name, err := accessor.Name()
if err != nil {
return st, err
}
st.Name = strings.ToLower(fmt.Sprintf("step-%s-%s", gvk.Kind, name))
st.Object = &so
return st, nil
}