diff --git a/pkg/controller/statefulset/stateful_set_utils.go b/pkg/controller/statefulset/stateful_set_utils.go index 3c4fcb9a2c8..4aba8a8ca73 100644 --- a/pkg/controller/statefulset/stateful_set_utils.go +++ b/pkg/controller/statefulset/stateful_set_utils.go @@ -311,11 +311,21 @@ func newRevision(set *apps.StatefulSet, revision int64) (*apps.ControllerRevisio if err != nil { return nil, err } - return history.NewControllerRevision(set, + cr, err := history.NewControllerRevision(set, controllerKind, selector, runtime.RawExtension{Raw: patch}, revision) + if err != nil { + return nil, err + } + if cr.ObjectMeta.Annotations == nil { + cr.ObjectMeta.Annotations = make(map[string]string) + } + for key, value := range set.Annotations { + cr.ObjectMeta.Annotations[key] = value + } + return cr, nil } // applyRevision returns a new StatefulSet constructed by restoring the state in revision to set. If the returned error diff --git a/pkg/controller/statefulset/stateful_set_utils_test.go b/pkg/controller/statefulset/stateful_set_utils_test.go index 58dfe05ecf6..192d4e75218 100644 --- a/pkg/controller/statefulset/stateful_set_utils_test.go +++ b/pkg/controller/statefulset/stateful_set_utils_test.go @@ -280,6 +280,12 @@ func TestCreateApplyRevision(t *testing.T) { t.Fatal(err) } set.Spec.Template.Spec.Containers[0].Name = "foo" + if set.Annotations == nil { + set.Annotations = make(map[string]string) + } + key := "foo" + expectedValue := "bar" + set.Annotations[key] = expectedValue restoredSet, err := applyRevision(set, revision) if err != nil { t.Fatal(err) @@ -291,6 +297,13 @@ func TestCreateApplyRevision(t *testing.T) { if !history.EqualRevision(revision, restoredRevision) { t.Errorf("wanted %v got %v", string(revision.Data.Raw), string(restoredRevision.Data.Raw)) } + value, ok := restoredRevision.Annotations[key] + if !ok { + t.Errorf("missing annotation %s", key) + } + if value != expectedValue { + t.Errorf("for annotation %s wanted %s got %s", key, expectedValue, value) + } } func newPVC(name string) v1.PersistentVolumeClaim {