mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 14:07:14 +00:00
Merge pull request #104351 from apelisse/add-name-to-errors
Add name to structuredmerge errors
This commit is contained in:
commit
de40aa59f3
@ -72,30 +72,41 @@ func NewCRDStructuredMergeManager(typeConverter TypeConverter, objectConverter r
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func objectGVKNN(obj runtime.Object) string {
|
||||||
|
name := "<unknown>"
|
||||||
|
namespace := "<unknown>"
|
||||||
|
if accessor, err := meta.Accessor(obj); err == nil {
|
||||||
|
name = accessor.GetName()
|
||||||
|
namespace = accessor.GetNamespace()
|
||||||
|
}
|
||||||
|
|
||||||
|
return fmt.Sprintf("%v/%v; %v", namespace, name, obj.GetObjectKind().GroupVersionKind())
|
||||||
|
}
|
||||||
|
|
||||||
// Update implements Manager.
|
// Update implements Manager.
|
||||||
func (f *structuredMergeManager) Update(liveObj, newObj runtime.Object, managed Managed, manager string) (runtime.Object, Managed, error) {
|
func (f *structuredMergeManager) Update(liveObj, newObj runtime.Object, managed Managed, manager string) (runtime.Object, Managed, error) {
|
||||||
newObjVersioned, err := f.toVersioned(newObj)
|
newObjVersioned, err := f.toVersioned(newObj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("failed to convert new object to proper version: %v (from %v to %v)", err, newObj.GetObjectKind().GroupVersionKind(), f.groupVersion)
|
return nil, nil, fmt.Errorf("failed to convert new object (%v) to proper version (%v): %v", objectGVKNN(newObj), f.groupVersion, err)
|
||||||
}
|
}
|
||||||
liveObjVersioned, err := f.toVersioned(liveObj)
|
liveObjVersioned, err := f.toVersioned(liveObj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("failed to convert live object to proper version: %v", err)
|
return nil, nil, fmt.Errorf("failed to convert live object (%v) to proper version: %v", objectGVKNN(liveObj), err)
|
||||||
}
|
}
|
||||||
newObjTyped, err := f.typeConverter.ObjectToTyped(newObjVersioned)
|
newObjTyped, err := f.typeConverter.ObjectToTyped(newObjVersioned)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("failed to convert new object (%v) to smd typed: %v", newObjVersioned.GetObjectKind().GroupVersionKind(), err)
|
return nil, nil, fmt.Errorf("failed to convert new object (%v) to smd typed: %v", objectGVKNN(newObjVersioned), err)
|
||||||
}
|
}
|
||||||
liveObjTyped, err := f.typeConverter.ObjectToTyped(liveObjVersioned)
|
liveObjTyped, err := f.typeConverter.ObjectToTyped(liveObjVersioned)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("failed to convert live object (%v) to smd typed: %v", liveObjVersioned.GetObjectKind().GroupVersionKind(), err)
|
return nil, nil, fmt.Errorf("failed to convert live object (%v) to smd typed: %v", objectGVKNN(liveObjVersioned), err)
|
||||||
}
|
}
|
||||||
apiVersion := fieldpath.APIVersion(f.groupVersion.String())
|
apiVersion := fieldpath.APIVersion(f.groupVersion.String())
|
||||||
|
|
||||||
// TODO(apelisse) use the first return value when unions are implemented
|
// TODO(apelisse) use the first return value when unions are implemented
|
||||||
_, managedFields, err := f.updater.Update(liveObjTyped, newObjTyped, apiVersion, managed.Fields(), manager)
|
_, managedFields, err := f.updater.Update(liveObjTyped, newObjTyped, apiVersion, managed.Fields(), manager)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("failed to update ManagedFields: %v", err)
|
return nil, nil, fmt.Errorf("failed to update ManagedFields (%v): %v", objectGVKNN(newObjVersioned), err)
|
||||||
}
|
}
|
||||||
managed = internal.NewManaged(managedFields, managed.Times())
|
managed = internal.NewManaged(managedFields, managed.Times())
|
||||||
|
|
||||||
@ -123,16 +134,16 @@ func (f *structuredMergeManager) Apply(liveObj, patchObj runtime.Object, managed
|
|||||||
|
|
||||||
liveObjVersioned, err := f.toVersioned(liveObj)
|
liveObjVersioned, err := f.toVersioned(liveObj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("failed to convert live object to proper version: %v", err)
|
return nil, nil, fmt.Errorf("failed to convert live object (%v) to proper version: %v", objectGVKNN(liveObj), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
patchObjTyped, err := f.typeConverter.ObjectToTyped(patchObj)
|
patchObjTyped, err := f.typeConverter.ObjectToTyped(patchObj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("failed to create typed patch object: %v", err)
|
return nil, nil, fmt.Errorf("failed to create typed patch object (%v): %v", objectGVKNN(patchObj), err)
|
||||||
}
|
}
|
||||||
liveObjTyped, err := f.typeConverter.ObjectToTyped(liveObjVersioned)
|
liveObjTyped, err := f.typeConverter.ObjectToTyped(liveObjVersioned)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("failed to create typed live object: %v", err)
|
return nil, nil, fmt.Errorf("failed to create typed live object (%v): %v", objectGVKNN(liveObjVersioned), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
apiVersion := fieldpath.APIVersion(f.groupVersion.String())
|
apiVersion := fieldpath.APIVersion(f.groupVersion.String())
|
||||||
@ -148,18 +159,18 @@ func (f *structuredMergeManager) Apply(liveObj, patchObj runtime.Object, managed
|
|||||||
|
|
||||||
newObj, err := f.typeConverter.TypedToObject(newObjTyped)
|
newObj, err := f.typeConverter.TypedToObject(newObjTyped)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("failed to convert new typed object to object: %v", err)
|
return nil, nil, fmt.Errorf("failed to convert new typed object (%v) to object: %v", objectGVKNN(patchObj), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
newObjVersioned, err := f.toVersioned(newObj)
|
newObjVersioned, err := f.toVersioned(newObj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("failed to convert new object to proper version: %v", err)
|
return nil, nil, fmt.Errorf("failed to convert new object (%v) to proper version: %v", objectGVKNN(patchObj), err)
|
||||||
}
|
}
|
||||||
f.objectDefaulter.Default(newObjVersioned)
|
f.objectDefaulter.Default(newObjVersioned)
|
||||||
|
|
||||||
newObjUnversioned, err := f.toUnversioned(newObjVersioned)
|
newObjUnversioned, err := f.toUnversioned(newObjVersioned)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("failed to convert to unversioned: %v", err)
|
return nil, nil, fmt.Errorf("failed to convert to unversioned (%v): %v", objectGVKNN(patchObj), err)
|
||||||
}
|
}
|
||||||
return newObjUnversioned, managed, nil
|
return newObjUnversioned, managed, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user