Revert "remove unwanted values returned from dry-run"

This reverts commit 60c1d58d02.
This commit is contained in:
Jordan Liggitt 2022-04-06 12:34:42 -04:00
parent 820247a3ae
commit adb7621919
3 changed files with 3 additions and 50 deletions

View File

@ -439,11 +439,6 @@ func (e *Store) Create(ctx context.Context, obj runtime.Object, createValidation
if e.Decorator != nil { if e.Decorator != nil {
e.Decorator(out) e.Decorator(out)
} }
if dryrun.IsDryRun(options.DryRun) {
if err := dryrun.ResetMetadata(obj, out); err != nil {
return nil, err
}
}
return out, nil return out, nil
} }

View File

@ -16,41 +16,7 @@ limitations under the License.
package dryrun package dryrun
import (
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
)
// IsDryRun returns true if the DryRun flag is an actual dry-run. // IsDryRun returns true if the DryRun flag is an actual dry-run.
func IsDryRun(flag []string) bool { func IsDryRun(flag []string) bool {
return len(flag) > 0 return len(flag) > 0
} }
// ResetMetadata resets metadata fields that are not allowed to be set by dry-run.
func ResetMetadata(originalObj, newObj runtime.Object) error {
originalObjMeta, err := meta.Accessor(originalObj)
if err != nil {
return errors.NewInternalError(err)
}
newObjMeta, err := meta.Accessor(newObj)
if err != nil {
return errors.NewInternalError(err)
}
// If a resource is created with dry-run enabled where generateName is set, the
// store will set the name to the generated name. We need to reset the name and restore
// the generateName metadata fields in order for the returned object to match the intent
// of the original template.
if originalObjMeta.GetGenerateName() != "" {
newObjMeta.SetName("")
}
newObjMeta.SetGenerateName(originalObjMeta.GetGenerateName())
// If UID is set in the dry-run output then that output cannot be used to create a resource. Reset
// the UID to allow the output to be used to create resources.
newObjMeta.SetUID("")
// If the resourceVersion is set in the dry-run output then that output cannot be used to create
// a resource. Reset the resourceVersion to allow the output to be used to create resources.
newObjMeta.SetResourceVersion("")
return nil
}

View File

@ -18,7 +18,6 @@ package dryrun
import ( import (
"context" "context"
"strings"
"testing" "testing"
v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
@ -48,11 +47,7 @@ var kindAllowList = sets.NewString()
const testNamespace = "dryrunnamespace" const testNamespace = "dryrunnamespace"
func DryRunCreateWithGenerateNameTest(t *testing.T, rsc dynamic.ResourceInterface, obj *unstructured.Unstructured, gvResource schema.GroupVersionResource) { func DryRunCreateWithGenerateNameTest(t *testing.T, rsc dynamic.ResourceInterface, obj *unstructured.Unstructured, gvResource schema.GroupVersionResource) {
// special resources with dots in the name cannot use generateName // Create a new object with generateName
if strings.Contains(obj.GetName(), ".") {
return
}
// Create a new object with generateName to ensure we don't taint the original object
gnObj := obj.DeepCopy() gnObj := obj.DeepCopy()
gnObj.SetGenerateName(obj.GetName() + "-") gnObj.SetGenerateName(obj.GetName() + "-")
gnObj.SetName("") gnObj.SetName("")
@ -79,11 +74,8 @@ func DryRunCreateTest(t *testing.T, rsc dynamic.ResourceInterface, obj *unstruct
t.Fatalf("created object's name should be an empty string if using GenerateName: %v", createdObj) t.Fatalf("created object's name should be an empty string if using GenerateName: %v", createdObj)
} }
// we won't have a generated name here, so we won't check for this case if _, err := rsc.Get(context.TODO(), obj.GetName(), metav1.GetOptions{}); !apierrors.IsNotFound(err) {
if obj.GetGenerateName() == "" { t.Fatalf("object shouldn't exist: %v", err)
if _, err := rsc.Get(context.TODO(), obj.GetName(), metav1.GetOptions{}); !apierrors.IsNotFound(err) {
t.Fatalf("object shouldn't exist: %v, %v", obj, err)
}
} }
} }