CollisionCount should have type int32 across controllers that use it for collision avoidance
This commit is contained in:
@@ -44,7 +44,7 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
|
||||
s.Status.ObservedGeneration = new(int64)
|
||||
}
|
||||
if s.Status.CollisionCount == nil {
|
||||
s.Status.CollisionCount = new(int64)
|
||||
s.Status.CollisionCount = new(int32)
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
@@ -192,7 +192,7 @@ type StatefulSetStatus struct {
|
||||
// uses this field as a collision avoidance mechanism when it needs to create the name for the
|
||||
// newest ControllerRevision.
|
||||
// +optional
|
||||
CollisionCount *int64
|
||||
CollisionCount *int32
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
@@ -244,7 +244,7 @@ func Convert_v1beta2_StatefulSetStatus_To_apps_StatefulSetStatus(in *appsv1beta2
|
||||
out.CurrentRevision = in.CurrentRevision
|
||||
out.UpdateRevision = in.UpdateRevision
|
||||
if in.CollisionCount != nil {
|
||||
out.CollisionCount = new(int64)
|
||||
out.CollisionCount = new(int32)
|
||||
*out.CollisionCount = *in.CollisionCount
|
||||
}
|
||||
return nil
|
||||
@@ -261,7 +261,7 @@ func Convert_apps_StatefulSetStatus_To_v1beta2_StatefulSetStatus(in *apps.Statef
|
||||
out.CurrentRevision = in.CurrentRevision
|
||||
out.UpdateRevision = in.UpdateRevision
|
||||
if in.CollisionCount != nil {
|
||||
out.CollisionCount = new(int64)
|
||||
out.CollisionCount = new(int32)
|
||||
*out.CollisionCount = *in.CollisionCount
|
||||
}
|
||||
return nil
|
||||
|
||||
@@ -302,7 +302,8 @@ func TestValidateStatefulSet(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestValidateStatefulSetStatus(t *testing.T) {
|
||||
minusOne := int64(-1)
|
||||
observedGenerationMinusOne := int64(-1)
|
||||
collisionCountMinusOne := int32(-1)
|
||||
tests := []struct {
|
||||
name string
|
||||
replicas int32
|
||||
@@ -310,7 +311,7 @@ func TestValidateStatefulSetStatus(t *testing.T) {
|
||||
currentReplicas int32
|
||||
updatedReplicas int32
|
||||
observedGeneration *int64
|
||||
collisionCount *int64
|
||||
collisionCount *int32
|
||||
expectedErr bool
|
||||
}{
|
||||
{
|
||||
@@ -359,7 +360,7 @@ func TestValidateStatefulSetStatus(t *testing.T) {
|
||||
readyReplicas: 3,
|
||||
currentReplicas: 2,
|
||||
updatedReplicas: 1,
|
||||
observedGeneration: &minusOne,
|
||||
observedGeneration: &observedGenerationMinusOne,
|
||||
expectedErr: true,
|
||||
},
|
||||
{
|
||||
@@ -368,7 +369,7 @@ func TestValidateStatefulSetStatus(t *testing.T) {
|
||||
readyReplicas: 3,
|
||||
currentReplicas: 2,
|
||||
updatedReplicas: 1,
|
||||
collisionCount: &minusOne,
|
||||
collisionCount: &collisionCountMinusOne,
|
||||
expectedErr: true,
|
||||
},
|
||||
{
|
||||
|
||||
@@ -345,7 +345,7 @@ type DeploymentStatus struct {
|
||||
// field as a collision avoidance mechanism when it needs to create the name for the
|
||||
// newest ReplicaSet.
|
||||
// +optional
|
||||
CollisionCount *int64
|
||||
CollisionCount *int32
|
||||
}
|
||||
|
||||
type DeploymentConditionType string
|
||||
@@ -519,7 +519,7 @@ type DaemonSetStatus struct {
|
||||
// uses this field as a collision avoidance mechanism when it needs to
|
||||
// create the name for the newest ControllerRevision.
|
||||
// +optional
|
||||
CollisionCount *int64
|
||||
CollisionCount *int32
|
||||
}
|
||||
|
||||
// +genclient
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user