Skip to content

Commit 1c4b7c8

Browse files
Fix wait_for_rollout in kubernetes_daemon_set_v1 (#2789)
Co-authored-by: Stano Bocinec <[email protected]>
1 parent 83324e7 commit 1c4b7c8

File tree

3 files changed

+44
-30
lines changed

3 files changed

+44
-30
lines changed

.changelog/2789.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
`resource/kubernetes_daemon_set_v1`: fix an issue with the provider not waiting for rollout with `wait_for_rollout = true`.
3+
```

kubernetes/resource_kubernetes_daemon_set_v1.go

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ func resourceKubernetesDaemonSetV1Create(ctx context.Context, d *schema.Resource
172172

173173
if d.Get("wait_for_rollout").(bool) {
174174
err = retry.RetryContext(ctx, d.Timeout(schema.TimeoutCreate),
175-
waitForDaemonSetReplicasFunc(ctx, conn, metadata.Namespace, metadata.Name))
175+
waitForDaemonSetPodsFunc(ctx, conn, metadata.Namespace, metadata.Name))
176176
if err != nil {
177177
return diag.FromErr(err)
178178
}
@@ -223,7 +223,7 @@ func resourceKubernetesDaemonSetV1Update(ctx context.Context, d *schema.Resource
223223

224224
if d.Get("wait_for_rollout").(bool) {
225225
err = retry.RetryContext(ctx, d.Timeout(schema.TimeoutUpdate),
226-
waitForDaemonSetReplicasFunc(ctx, conn, namespace, name))
226+
waitForDaemonSetPodsFunc(ctx, conn, namespace, name))
227227
if err != nil {
228228
return diag.FromErr(err)
229229
}
@@ -333,22 +333,26 @@ func resourceKubernetesDaemonSetV1Exists(ctx context.Context, d *schema.Resource
333333
return true, err
334334
}
335335

336-
func waitForDaemonSetReplicasFunc(ctx context.Context, conn *kubernetes.Clientset, ns, name string) retry.RetryFunc {
336+
func waitForDaemonSetPodsFunc(ctx context.Context, conn *kubernetes.Clientset, ns, name string) retry.RetryFunc {
337337
return func() *retry.RetryError {
338338
daemonSet, err := conn.AppsV1().DaemonSets(ns).Get(ctx, name, metav1.GetOptions{})
339339
if err != nil {
340340
return retry.NonRetryableError(err)
341341
}
342342

343-
desiredReplicas := daemonSet.Status.DesiredNumberScheduled
344-
log.Printf("[DEBUG] Current number of labelled replicas of %q: %d (of %d)\n",
345-
daemonSet.GetName(), daemonSet.Status.CurrentNumberScheduled, desiredReplicas)
343+
desiredPods := daemonSet.Status.DesiredNumberScheduled
346344

347-
if daemonSet.Status.CurrentNumberScheduled == desiredReplicas {
348-
return nil
345+
if daemonSet.Generation > daemonSet.Status.ObservedGeneration {
346+
return retry.RetryableError(fmt.Errorf("waiting for rollout to start."))
349347
}
350348

351-
return retry.RetryableError(fmt.Errorf("Waiting for %d replicas of %q to be scheduled (%d)",
352-
desiredReplicas, daemonSet.GetName(), daemonSet.Status.CurrentNumberScheduled))
349+
if daemonSet.Generation == daemonSet.Status.ObservedGeneration {
350+
if daemonSet.Status.NumberReady == desiredPods {
351+
return nil
352+
}
353+
return retry.RetryableError(fmt.Errorf("waiting for rollout to finish: %d pods desired; %d pods ready",
354+
desiredPods, daemonSet.Status.NumberReady))
355+
}
356+
return retry.NonRetryableError(fmt.Errorf("observed generation %d is not expected to be greater than generation %d", daemonSet.Status.ObservedGeneration, daemonSet.Generation))
353357
}
354358
}

kubernetes/resource_kubernetes_daemon_set_v1_test.go

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -890,8 +890,9 @@ func testAccKubernetesDaemonSetV1ConfigWithTemplateMetadata(depName, imageName s
890890
891891
spec {
892892
container {
893-
image = "%s"
894-
name = "containername"
893+
image = "%s"
894+
name = "containername"
895+
command = ["sleep", "infinity"]
895896
}
896897
termination_grace_period_seconds = 1
897898
}
@@ -977,8 +978,9 @@ func testAccKubernetesDaemonSetV1WithInitContainer(depName, imageName string) st
977978
}
978979
979980
container {
980-
image = "%s"
981-
name = "containername"
981+
image = "%s"
982+
name = "containername"
983+
command = ["sleep", "infinity"]
982984
}
983985
termination_grace_period_seconds = 1
984986
}
@@ -1010,8 +1012,9 @@ func testAccKubernetesDaemonSetV1WithNoTopLevelLabels(depName, imageName string)
10101012
10111013
spec {
10121014
container {
1013-
image = "%s"
1014-
name = "containername"
1015+
image = "%s"
1016+
name = "containername"
1017+
command = ["sleep", "infinity"]
10151018
}
10161019
termination_grace_period_seconds = 1
10171020
}
@@ -1064,8 +1067,9 @@ func testAccKubernetesDaemonSetV1ConfigWithTolerations(rcName, imageName string,
10641067
}
10651068
10661069
container {
1067-
image = "%s"
1068-
name = "containername"
1070+
image = "%s"
1071+
name = "containername"
1072+
command = ["sleep", "infinity"]
10691073
}
10701074
termination_grace_period_seconds = 1
10711075
}
@@ -1119,6 +1123,7 @@ func testAccKubernetesDaemonSetV1ConfigWithContainerSecurityContextSeccompProfil
11191123
}
11201124
}
11211125
}
1126+
wait_for_rollout = false
11221127
}
11231128
`, deploymentName, seccompProfileType, imageName, seccompProfileType)
11241129
}
@@ -1169,6 +1174,7 @@ func testAccKubernetesDaemonSetV1ConfigWithContainerSecurityContextSeccompProfil
11691174
}
11701175
}
11711176
}
1177+
wait_for_rollout = false
11721178
}
11731179
`, deploymentName, imageName)
11741180
}
@@ -1199,20 +1205,19 @@ func testAccKubernetesDaemonSetV1ConfigWithResourceRequirements(deploymentName,
11991205
12001206
spec {
12011207
container {
1202-
image = "%s"
1203-
name = "containername"
1208+
image = "%s"
1209+
name = "containername"
1210+
command = ["sleep", "infinity"]
12041211
12051212
resources {
12061213
limits = {
1207-
cpu = "0.5"
1208-
memory = "512Mi"
1209-
"nvidia/gpu" = "1"
1214+
cpu = "0.5"
1215+
memory = "512Mi"
12101216
}
12111217
12121218
requests = {
1213-
cpu = "250m"
1214-
memory = "50Mi"
1215-
"nvidia/gpu" = "1"
1219+
cpu = "250m"
1220+
memory = "50Mi"
12161221
}
12171222
}
12181223
}
@@ -1250,8 +1255,9 @@ func testAccKubernetesDaemonSetV1ConfigWithEmptyResourceRequirements(deploymentN
12501255
12511256
spec {
12521257
container {
1253-
image = "%s"
1254-
name = "containername"
1258+
image = "%s"
1259+
name = "containername"
1260+
command = ["sleep", "infinity"]
12551261
12561262
resources {
12571263
limits = {}
@@ -1292,8 +1298,9 @@ func testAccKubernetesDaemonSetV1ConfigWithResourceRequirementsLimitsOnly(deploy
12921298
12931299
spec {
12941300
container {
1295-
image = "%s"
1296-
name = "containername"
1301+
image = "%s"
1302+
name = "containername"
1303+
command = ["sleep", "infinity"]
12971304
12981305
resources {
12991306
limits = {

0 commit comments

Comments
 (0)