Skip to content

Commit eda146d

Browse files
committed
fix: start/stop pods: Do not crash if related Deployment / Statefulset does not exist
1 parent 4a84874 commit eda146d

File tree

4 files changed

+36
-8
lines changed

4 files changed

+36
-8
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# wiremind-kubernetes
22

3+
## v7.4.2 (2024-07-25)
4+
### Fix
5+
- start/stop pods: Do not crash if related Deployment / Statefulset does not exist
6+
37
## v7.4.4 (2024-04-22)
48
### Chore
59
- mark package as PEP 561-compliant for type hints

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
7.4.4
1+
7.4.5

src/wiremind_kubernetes/kubernetes_helper.py

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ def scale_down_statefulset(self, statefulset_name: str) -> None:
133133
self.client_appsv1_api.patch_namespaced_stateful_set_scale(statefulset_name, self.namespace, body)
134134
logger.debug("Done deleting.")
135135

136-
@retry_kubernetes_request_no_ignore
136+
@retry_kubernetes_request
137137
def scale_down_deployment(self, deployment_name: str) -> None:
138138
body = self.get_deployment_scale(deployment_name)
139139
logger.debug("Deleting all Pods for %s", deployment_name)
@@ -148,7 +148,7 @@ def scale_up_statefulset(self, statefulset_name: str, pod_amount: int = 1) -> No
148148
self.client_appsv1_api.patch_namespaced_stateful_set_scale(statefulset_name, self.namespace, body)
149149
logger.debug("Done recreating.")
150150

151-
@retry_kubernetes_request_no_ignore
151+
@retry_kubernetes_request
152152
def scale_up_deployment(self, deployment_name: str, pod_amount: int) -> None:
153153
body = self.get_deployment_scale(deployment_name)
154154
logger.debug("Recreating backend Pods for %s", deployment_name)
@@ -183,7 +183,12 @@ def _get_pods_from_deployment(self, deployment_name: str, statefulset: bool = Fa
183183
raise
184184

185185
def is_deployment_stopped(self, deployment_name: str, statefulset: bool = False) -> bool:
186-
pod_list: List = self._get_pods_from_deployment(deployment_name, statefulset)
186+
try:
187+
pod_list: List = self._get_pods_from_deployment(deployment_name, statefulset)
188+
except kubernetes.client.rest.ApiException as e:
189+
if e.status == 404:
190+
logger.warning("Not found, ignoring.")
191+
return True
187192

188193
current_scale = 0
189194
for pod in pod_list:
@@ -197,10 +202,16 @@ def is_deployment_stopped(self, deployment_name: str, statefulset: bool = False)
197202
return True
198203

199204
def is_deployment_ready(self, deployment_name: str, statefulset: bool = False) -> bool:
200-
if statefulset:
201-
status = self.client_appsv1_api.read_namespaced_stateful_set_status(deployment_name, self.namespace)
202-
else:
203-
status = self.client_appsv1_api.read_namespaced_deployment_status(deployment_name, self.namespace)
205+
try:
206+
if statefulset:
207+
status = self.client_appsv1_api.read_namespaced_stateful_set_status(deployment_name, self.namespace)
208+
else:
209+
status = self.client_appsv1_api.read_namespaced_deployment_status(deployment_name, self.namespace)
210+
except kubernetes.client.rest.ApiException as e:
211+
if e.status == 404:
212+
logger.warning("Not found, ignoring.")
213+
return True
214+
204215
expected_replicas = status.spec.replicas
205216
ready_replicas = status.status.ready_replicas
206217
resource_type = statefulset and "StatefulSet" or "Deployment"

src/wiremind_kubernetes/tests/e2e_tests/manifests/2_edss.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,19 @@ spec:
6161

6262
---
6363

64+
apiVersion: "wiremind.io/v1"
65+
kind: ExpectedDeploymentScale
66+
metadata:
67+
name: concerned-but-without-related-deployment
68+
labels:
69+
app.kubernetes.io/instance: concerned
70+
spec:
71+
deploymentName: concerned-but-without-related-deployment
72+
expectedScale: 1
73+
priority: 10
74+
75+
---
76+
6477
apiVersion: "wiremind.io/v1"
6578
kind: ExpectedDeploymentScale
6679
metadata:

0 commit comments

Comments
 (0)