mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-04-14 12:51:16 +00:00
k8s_scale - handle scaling StatefulSets with 'updateStrategy=OnDelete' (#579)
k8s_scale - handle scaling StatefulSets with 'updateStrategy=OnDelete' SUMMARY Likely Fixes #503 Handle scaling StatefulSets with 'updateStrategy=OnDelete' ISSUE TYPE Bugfix Pull Request COMPONENT NAME k8s_scale ADDITIONAL INFORMATION Reviewed-by: Mike Graves <mgraves@redhat.com> Reviewed-by: Bikouo Aubin <None>
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
---
|
||||
bugfixes:
|
||||
- k8s_scale - fix issue when scaling StatefulSets with updateStrategy=OnDelete (https://github.com/ansible-collections/kubernetes.core/issues/579).
|
||||
@@ -61,6 +61,13 @@ def daemonset_ready(daemonset: ResourceInstance) -> bool:
|
||||
|
||||
|
||||
def statefulset_ready(statefulset: ResourceInstance) -> bool:
|
||||
if statefulset.spec.updateStrategy.type == "OnDelete":
|
||||
return bool(
|
||||
statefulset.status
|
||||
and statefulset.status.observedGeneration
|
||||
== (statefulset.metadata.generation or 0)
|
||||
and statefulset.status.replicas == statefulset.spec.replicas
|
||||
)
|
||||
# These may be None
|
||||
updated_replicas = statefulset.status.updatedReplicas or 0
|
||||
ready_replicas = statefulset.status.readyReplicas or 0
|
||||
|
||||
@@ -389,6 +389,71 @@
|
||||
that:
|
||||
- output.result.status.replicas == 0
|
||||
|
||||
- name: Create a StatefulSet with updateStrategy=OnDelete
|
||||
kubernetes.core.k8s:
|
||||
wait: yes
|
||||
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
||||
definition:
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
namespace: "{{ scale_namespace }}"
|
||||
name: scale-set-ondelete
|
||||
spec:
|
||||
replicas: 2
|
||||
updateStrategy:
|
||||
type: OnDelete
|
||||
selector:
|
||||
matchLabels:
|
||||
app: foo
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: foo
|
||||
spec:
|
||||
terminationGracePeriodSeconds: 10
|
||||
containers:
|
||||
- image: busybox
|
||||
name: busybox
|
||||
command:
|
||||
- sleep
|
||||
- "600"
|
||||
register: output
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- output.result.status.replicas == 2
|
||||
|
||||
- name: Wait for StatefulSet to scale down to 0
|
||||
kubernetes.core.k8s_scale:
|
||||
kind: StatefulSet
|
||||
api_version: apps/v1
|
||||
name: scale-set-ondelete
|
||||
namespace: "{{ scale_namespace }}"
|
||||
replicas: 0
|
||||
wait: yes
|
||||
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
||||
register: output
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- output.result.status.replicas == 0
|
||||
|
||||
- name: Wait for StatefulSet to scale up to 2
|
||||
kubernetes.core.k8s_scale:
|
||||
kind: StatefulSet
|
||||
api_version: apps/v1
|
||||
name: scale-set-ondelete
|
||||
namespace: "{{ scale_namespace }}"
|
||||
replicas: 2
|
||||
wait: yes
|
||||
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
||||
register: output
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- output.result.status.replicas == 2
|
||||
|
||||
always:
|
||||
- name: Remove namespace
|
||||
k8s:
|
||||
|
||||
Reference in New Issue
Block a user