mirror of
https://github.com/rancher/os.git
synced 2025-08-10 11:03:16 +00:00
47 lines
1.0 KiB
Go
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
|
|
}
|