CollisionCount should have type int32 across controllers that use it for collision avoidance

This commit is contained in:
Di Xu
2017-08-13 20:10:25 +08:00
parent 12ce4151ce
commit 85602fd542
16 changed files with 48 additions and 41 deletions

View File

@@ -95,7 +95,7 @@ func ValidateDaemonSetStatusUpdate(ds, oldDS *extensions.DaemonSet) field.ErrorL
allErrs := apivalidation.ValidateObjectMetaUpdate(&ds.ObjectMeta, &oldDS.ObjectMeta, field.NewPath("metadata"))
allErrs = append(allErrs, validateDaemonSetStatus(&ds.Status, field.NewPath("status"))...)
if isDecremented(ds.Status.CollisionCount, oldDS.Status.CollisionCount) {
value := int64(0)
value := int32(0)
if ds.Status.CollisionCount != nil {
value = *ds.Status.CollisionCount
}
@@ -311,7 +311,7 @@ func ValidateDeploymentStatus(status *extensions.DeploymentStatus, fldPath *fiel
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.AvailableReplicas), fldPath.Child("availableReplicas"))...)
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.UnavailableReplicas), fldPath.Child("unavailableReplicas"))...)
if status.CollisionCount != nil {
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(*status.CollisionCount, fldPath.Child("collisionCount"))...)
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(*status.CollisionCount), fldPath.Child("collisionCount"))...)
}
msg := "cannot be greater than status.replicas"
if status.UpdatedReplicas > status.Replicas {
@@ -342,7 +342,7 @@ func ValidateDeploymentStatusUpdate(update, old *extensions.Deployment) field.Er
fldPath := field.NewPath("status")
allErrs = append(allErrs, ValidateDeploymentStatus(&update.Status, fldPath)...)
if isDecremented(update.Status.CollisionCount, old.Status.CollisionCount) {
value := int64(0)
value := int32(0)
if update.Status.CollisionCount != nil {
value = *update.Status.CollisionCount
}
@@ -352,7 +352,7 @@ func ValidateDeploymentStatusUpdate(update, old *extensions.Deployment) field.Er
}
// TODO: Move in "k8s.io/kubernetes/pkg/api/validation"
func isDecremented(update, old *int64) bool {
func isDecremented(update, old *int32) bool {
if update == nil && old != nil {
return true
}

View File

@@ -1238,6 +1238,7 @@ func int64p(i int) *int64 {
}
func TestValidateDeploymentStatus(t *testing.T) {
collisionCount := int32(-3)
tests := []struct {
name string
@@ -1246,7 +1247,7 @@ func TestValidateDeploymentStatus(t *testing.T) {
readyReplicas int32
availableReplicas int32
observedGeneration int64
collisionCount *int64
collisionCount *int32
expectedErr bool
}{
@@ -1347,7 +1348,7 @@ func TestValidateDeploymentStatus(t *testing.T) {
name: "invalid collisionCount",
replicas: 3,
observedGeneration: 1,
collisionCount: int64p(-3),
collisionCount: &collisionCount,
expectedErr: true,
},
}
@@ -1371,6 +1372,8 @@ func TestValidateDeploymentStatus(t *testing.T) {
}
func TestValidateDeploymentStatusUpdate(t *testing.T) {
collisionCount := int32(1)
otherCollisionCount := int32(2)
tests := []struct {
name string
@@ -1384,24 +1387,24 @@ func TestValidateDeploymentStatusUpdate(t *testing.T) {
CollisionCount: nil,
},
to: extensions.DeploymentStatus{
CollisionCount: int64p(1),
CollisionCount: &collisionCount,
},
expectedErr: false,
},
{
name: "stable: valid update",
from: extensions.DeploymentStatus{
CollisionCount: int64p(1),
CollisionCount: &collisionCount,
},
to: extensions.DeploymentStatus{
CollisionCount: int64p(1),
CollisionCount: &collisionCount,
},
expectedErr: false,
},
{
name: "unset: invalid update",
from: extensions.DeploymentStatus{
CollisionCount: int64p(1),
CollisionCount: &collisionCount,
},
to: extensions.DeploymentStatus{
CollisionCount: nil,
@@ -1411,10 +1414,10 @@ func TestValidateDeploymentStatusUpdate(t *testing.T) {
{
name: "decrease: invalid update",
from: extensions.DeploymentStatus{
CollisionCount: int64p(2),
CollisionCount: &otherCollisionCount,
},
to: extensions.DeploymentStatus{
CollisionCount: int64p(1),
CollisionCount: &collisionCount,
},
expectedErr: true,
},