Default extensions/v1beta1 Deployment's RevisionHistoryLimit to MaxInt32

This commit is contained in:
Weibin Lin 2018-08-10 10:12:43 +08:00
parent fbb2dfcc6a
commit 1f921760d6
5 changed files with 27 additions and 1 deletions

View File

@ -118,6 +118,12 @@ func SetDefaults_Deployment(obj *extensionsv1beta1.Deployment) {
obj.Spec.ProgressDeadlineSeconds = new(int32) obj.Spec.ProgressDeadlineSeconds = new(int32)
*obj.Spec.ProgressDeadlineSeconds = math.MaxInt32 *obj.Spec.ProgressDeadlineSeconds = math.MaxInt32
} }
// Set extensionsv1beta1.DeploymentSpec.RevisionHistoryLimit to MaxInt32,
// which has the same meaning as unset.
if obj.Spec.RevisionHistoryLimit == nil {
obj.Spec.RevisionHistoryLimit = new(int32)
*obj.Spec.RevisionHistoryLimit = math.MaxInt32
}
} }
func SetDefaults_ReplicaSet(obj *extensionsv1beta1.ReplicaSet) { func SetDefaults_ReplicaSet(obj *extensionsv1beta1.ReplicaSet) {

View File

@ -191,6 +191,7 @@ func TestSetDefaultDeployment(t *testing.T) {
}, },
Template: defaultTemplate, Template: defaultTemplate,
ProgressDeadlineSeconds: utilpointer.Int32Ptr(math.MaxInt32), ProgressDeadlineSeconds: utilpointer.Int32Ptr(math.MaxInt32),
RevisionHistoryLimit: utilpointer.Int32Ptr(math.MaxInt32),
}, },
}, },
}, },
@ -217,6 +218,7 @@ func TestSetDefaultDeployment(t *testing.T) {
}, },
Template: defaultTemplate, Template: defaultTemplate,
ProgressDeadlineSeconds: utilpointer.Int32Ptr(math.MaxInt32), ProgressDeadlineSeconds: utilpointer.Int32Ptr(math.MaxInt32),
RevisionHistoryLimit: utilpointer.Int32Ptr(math.MaxInt32),
}, },
}, },
}, },
@ -242,6 +244,7 @@ func TestSetDefaultDeployment(t *testing.T) {
}, },
Template: defaultTemplate, Template: defaultTemplate,
ProgressDeadlineSeconds: utilpointer.Int32Ptr(math.MaxInt32), ProgressDeadlineSeconds: utilpointer.Int32Ptr(math.MaxInt32),
RevisionHistoryLimit: utilpointer.Int32Ptr(math.MaxInt32),
}, },
}, },
}, },
@ -262,6 +265,7 @@ func TestSetDefaultDeployment(t *testing.T) {
}, },
Template: defaultTemplate, Template: defaultTemplate,
ProgressDeadlineSeconds: utilpointer.Int32Ptr(math.MaxInt32), ProgressDeadlineSeconds: utilpointer.Int32Ptr(math.MaxInt32),
RevisionHistoryLimit: utilpointer.Int32Ptr(math.MaxInt32),
}, },
}, },
}, },
@ -283,6 +287,7 @@ func TestSetDefaultDeployment(t *testing.T) {
}, },
Template: defaultTemplate, Template: defaultTemplate,
ProgressDeadlineSeconds: utilpointer.Int32Ptr(30), ProgressDeadlineSeconds: utilpointer.Int32Ptr(30),
RevisionHistoryLimit: utilpointer.Int32Ptr(math.MaxInt32),
}, },
}, },
}, },

View File

@ -424,7 +424,7 @@ func (dc *DeploymentController) scaleReplicaSet(rs *apps.ReplicaSet, newScale in
// where N=d.Spec.RevisionHistoryLimit. Old replica sets are older versions of the podtemplate of a deployment kept // where N=d.Spec.RevisionHistoryLimit. Old replica sets are older versions of the podtemplate of a deployment kept
// around by default 1) for historical reasons and 2) for the ability to rollback a deployment. // around by default 1) for historical reasons and 2) for the ability to rollback a deployment.
func (dc *DeploymentController) cleanupDeployment(oldRSs []*apps.ReplicaSet, deployment *apps.Deployment) error { func (dc *DeploymentController) cleanupDeployment(oldRSs []*apps.ReplicaSet, deployment *apps.Deployment) error {
if deployment.Spec.RevisionHistoryLimit == nil { if !deploymentutil.HasRevisionHistoryLimit(deployment) {
return nil return nil
} }

View File

@ -17,6 +17,7 @@ limitations under the License.
package deployment package deployment
import ( import (
"math"
"testing" "testing"
"time" "time"
@ -393,6 +394,16 @@ func TestDeploymentController_cleanupDeployment(t *testing.T) {
revisionHistoryLimit: 0, revisionHistoryLimit: 0,
expectedDeletions: 0, expectedDeletions: 0,
}, },
{
// with unlimited revisionHistoryLimit
oldRSs: []*apps.ReplicaSet{
newRSWithStatus("foo-1", 0, 0, selector),
newRSWithStatus("foo-2", 0, 0, selector),
newRSWithStatus("foo-3", 0, 0, selector),
},
revisionHistoryLimit: math.MaxInt32,
expectedDeletions: 0,
},
} }
for i := range tests { for i := range tests {
@ -418,6 +429,7 @@ func TestDeploymentController_cleanupDeployment(t *testing.T) {
defer close(stopCh) defer close(stopCh)
informers.Start(stopCh) informers.Start(stopCh)
t.Logf(" &test.revisionHistoryLimit: %d", test.revisionHistoryLimit)
d := newDeployment("foo", 1, &test.revisionHistoryLimit, nil, nil, map[string]string{"foo": "bar"}) d := newDeployment("foo", 1, &test.revisionHistoryLimit, nil, nil, map[string]string{"foo": "bar"})
controller.cleanupDeployment(test.oldRSs, d) controller.cleanupDeployment(test.oldRSs, d)

View File

@ -886,3 +886,6 @@ func ResolveFenceposts(maxSurge, maxUnavailable *intstrutil.IntOrString, desired
func HasProgressDeadline(d *apps.Deployment) bool { func HasProgressDeadline(d *apps.Deployment) bool {
return d.Spec.ProgressDeadlineSeconds != nil && *d.Spec.ProgressDeadlineSeconds != math.MaxInt32 return d.Spec.ProgressDeadlineSeconds != nil && *d.Spec.ProgressDeadlineSeconds != math.MaxInt32
} }
func HasRevisionHistoryLimit(d *apps.Deployment) bool {
return d.Spec.RevisionHistoryLimit != nil && *d.Spec.RevisionHistoryLimit != math.MaxInt32
}