func UnstructuredToResource()

in mpdev/internal/resources/types.go [35:53]


func UnstructuredToResource(obj Unstructured) (Resource, error) {
	typeMeta := obj.getTypeMeta()
	fn := typeMapper[typeMeta]
	if fn == nil {
		return nil, fmt.Errorf("unknown Kind: %s. APIVersion: %s", typeMeta.Kind, typeMeta.APIVersion)
	}
	resource := fn()
	b, err := json.Marshal(obj)
	if err != nil {
		return nil, errors.Wrapf(err, "unable to marshal resource with kind: %s", typeMeta.Kind)
	}

	err = json.Unmarshal(b, resource)
	if err != nil {
		return nil, errors.Wrapf(err, "unable to unmarshal resource with kind: %s", typeMeta.Kind)
	}

	return resource, nil
}