1
0
mirror of https://github.com/rancher/os.git synced 2025-08-10 11:03:16 +00:00
os/pkg/controllers/managedos/resource.go
Darren Shepherd 5675644d9f Add operator
2021-10-20 10:58:54 -07:00

47 lines
1.0 KiB
Go

package managedos
import (
"crypto/sha256"
"encoding/hex"
"encoding/json"
"fmt"
"github.com/rancher/fleet/pkg/apis/fleet.cattle.io/v1alpha1"
"github.com/rancher/wrangler/pkg/gvk"
"github.com/rancher/wrangler/pkg/name"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
)
func ToResources(objs []runtime.Object) (result []v1alpha1.BundleResource, err error) {
for _, obj := range objs {
obj = obj.DeepCopyObject()
if err := gvk.Set(obj); err != nil {
return nil, fmt.Errorf("failed to set gvk: %w", err)
}
typeMeta, err := meta.TypeAccessor(obj)
if err != nil {
return nil, err
}
meta, err := meta.Accessor(obj)
if err != nil {
return nil, err
}
data, err := json.Marshal(obj)
if err != nil {
return nil, err
}
digest := sha256.Sum256(data)
filename := name.SafeConcatName(typeMeta.GetKind(), meta.GetNamespace(), meta.GetName(), hex.EncodeToString(digest[:])[:12]) + ".yaml"
result = append(result, v1alpha1.BundleResource{
Name: filename,
Content: string(data),
})
}
return
}