From e26cfc1bd3e05f19c298885e2b732bc5614bc00b Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Thu, 11 Jul 2019 10:13:22 -0400 Subject: [PATCH] fix(kubernetes): Fix daemonset stability condition (#3863) (#3865) Currently we'll consider a daemonset stable if it has the correct number of replicas, even if they are of the wrong generation. Fix this by adding a check for the generation, just as we do for replica sets. Also, fix a bug in the replica set implementation where we are comparing Integers using == instead of using .equals. --- .../v2/op/handler/KubernetesDaemonSetHandler.java | 6 ++++++ .../v2/op/handler/KubernetesReplicaSetHandler.java | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/op/handler/KubernetesDaemonSetHandler.java b/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/op/handler/KubernetesDaemonSetHandler.java index 910d8613b99..5bffedae271 100644 --- a/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/op/handler/KubernetesDaemonSetHandler.java +++ b/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/op/handler/KubernetesDaemonSetHandler.java @@ -105,6 +105,12 @@ private Status status(V1beta2DaemonSet daemonSet) { return result; } + Long observedGeneration = status.getObservedGeneration(); + if (observedGeneration != null + && !observedGeneration.equals(daemonSet.getMetadata().getGeneration())) { + return result.unstable("Waiting for daemonset spec update to be observed"); + } + int desiredReplicas = status.getDesiredNumberScheduled(); Integer existing = status.getCurrentNumberScheduled(); if (existing == null || desiredReplicas > existing) { diff --git a/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/op/handler/KubernetesReplicaSetHandler.java b/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/op/handler/KubernetesReplicaSetHandler.java index e6bd5572aea..d11867a674e 100644 --- a/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/op/handler/KubernetesReplicaSetHandler.java +++ b/clouddriver-kubernetes/src/main/groovy/com/netflix/spinnaker/clouddriver/kubernetes/v2/op/handler/KubernetesReplicaSetHandler.java @@ -103,7 +103,7 @@ private Status status(V1beta2ReplicaSet replicaSet) { Long observedGeneration = status.getObservedGeneration(); if (observedGeneration != null - && observedGeneration != replicaSet.getMetadata().getGeneration()) { + && !observedGeneration.equals(replicaSet.getMetadata().getGeneration())) { result.unstable("Waiting for replicaset spec update to be observed"); }