forked from nudtpc/pcm-kubernetes
添加k8s结构转换工具
This commit is contained in:
parent
f8788096c7
commit
0a7b58eba8
|
@ -0,0 +1,48 @@
|
|||
package helper
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
// ConvertToTypedObject converts an unstructured object to typed.
|
||||
func ConvertToTypedObject(in, out interface{}) error {
|
||||
if in == nil || out == nil {
|
||||
return fmt.Errorf("convert objects should not be nil")
|
||||
}
|
||||
|
||||
switch v := in.(type) {
|
||||
case *unstructured.Unstructured:
|
||||
return runtime.DefaultUnstructuredConverter.FromUnstructured(v.UnstructuredContent(), out)
|
||||
case map[string]interface{}:
|
||||
return runtime.DefaultUnstructuredConverter.FromUnstructured(v, out)
|
||||
default:
|
||||
return fmt.Errorf("convert object must be pointer of unstructured or map[string]interface{}")
|
||||
}
|
||||
}
|
||||
|
||||
// ApplyReplica applies the Replica value for the specific field.
|
||||
func ApplyReplica(workload *unstructured.Unstructured, desireReplica int64, field string) error {
|
||||
_, ok, err := unstructured.NestedInt64(workload.Object, "spec", field)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if ok {
|
||||
err := unstructured.SetNestedField(workload.Object, desireReplica, "spec", field)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// ToUnstructured converts a typed object to an unstructured object.
|
||||
func ToUnstructured(obj interface{}) (*unstructured.Unstructured, error) {
|
||||
uncastObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(obj)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &unstructured.Unstructured{Object: uncastObj}, nil
|
||||
}
|
Loading…
Reference in New Issue