1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-07 00:17:13 +00:00
kyverno/pkg/utils/kube/unstructured.go
Charles-Edouard Brétéché 23fef004bb
chore: move ConvertToUnstructured from engine utils to kube utils (#5847)
Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2023-01-03 12:02:15 +00:00

49 lines
1.2 KiB
Go

package kube
import (
"encoding/json"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
)
// BytesToUnstructured converts the resource to unstructured format
func BytesToUnstructured(data []byte) (*unstructured.Unstructured, error) {
resource := &unstructured.Unstructured{}
err := resource.UnmarshalJSON(data)
if err != nil {
return nil, err
}
return resource, nil
}
func ObjToUnstructured(obj interface{}) (*unstructured.Unstructured, error) {
raw, err := json.Marshal(obj)
if err != nil {
return nil, err
}
unstrObj := map[string]interface{}{}
err = json.Unmarshal(raw, &unstrObj)
if err != nil {
return nil, err
}
return &unstructured.Unstructured{Object: unstrObj}, nil
}
func NewUnstructured(apiVersion, kind, namespace, name string) *unstructured.Unstructured {
return &unstructured.Unstructured{
Object: map[string]interface{}{
"apiVersion": apiVersion,
"kind": kind,
"metadata": map[string]interface{}{
"namespace": namespace,
"name": name,
},
},
}
}
func NewUnstructuredWithSpec(apiVersion, kind, namespace, name string, spec map[string]interface{}) *unstructured.Unstructured {
u := NewUnstructured(apiVersion, kind, namespace, name)
u.Object["spec"] = spec
return u
}