krkn-lib 5.1.4__py3-none-any.whl → 5.1.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,405 @@
1
+ import time
2
+ import unittest
3
+
4
+
5
+ from krkn_lib.models.k8s import PodsStatus, AffectedPod
6
+ from krkn_lib.models.pod_monitor.models import (
7
+ PodEvent,
8
+ PodStatus,
9
+ MonitoredPod,
10
+ PodsSnapshot,
11
+ )
12
+
13
+
14
+ class TestMonitorPodsMonitorModels(unittest.TestCase):
15
+ def test_init_affectedpod(self):
16
+ # Test with required arguments only
17
+ pod = AffectedPod("my-pod", "my-namespace")
18
+ self.assertEqual(pod.pod_name, "my-pod")
19
+ self.assertEqual(pod.namespace, "my-namespace")
20
+ self.assertIsNone(pod.total_recovery_time)
21
+ self.assertIsNone(pod.pod_readiness_time)
22
+ self.assertIsNone(pod.pod_rescheduling_time)
23
+
24
+ # Test with all arguments
25
+ pod = AffectedPod(
26
+ "my-pod-2",
27
+ "my-namespace-2",
28
+ total_recovery_time=10.5,
29
+ pod_readiness_time=5.5,
30
+ pod_rescheduling_time=5.0,
31
+ )
32
+ self.assertEqual(pod.pod_name, "my-pod-2")
33
+ self.assertEqual(pod.namespace, "my-namespace-2")
34
+ self.assertEqual(pod.total_recovery_time, 10.5)
35
+ self.assertEqual(pod.pod_readiness_time, 5.5)
36
+ self.assertEqual(pod.pod_rescheduling_time, 5.0)
37
+
38
+ def test_init_podsstatus(self):
39
+ pods_status = PodsStatus()
40
+ self.assertEqual(len(pods_status.recovered), 0)
41
+ self.assertEqual(len(pods_status.unrecovered), 0)
42
+ self.assertIsNone(pods_status.error)
43
+
44
+ def test_merge_podsstatus(self):
45
+ status1 = PodsStatus()
46
+ status1.recovered.append(AffectedPod("pod-1", "ns-1", 10.0, 5.0, 5.0))
47
+ status1.unrecovered.append(AffectedPod("pod-2", "ns-2"))
48
+
49
+ status2 = PodsStatus()
50
+ status2.recovered.append(
51
+ AffectedPod("pod-3", "ns-3", 20.0, 10.0, 10.0)
52
+ )
53
+ status2.unrecovered.append(AffectedPod("pod-4", "ns-4"))
54
+
55
+ status1.merge(status2)
56
+
57
+ self.assertEqual(len(status1.recovered), 2)
58
+ self.assertEqual(len(status1.unrecovered), 2)
59
+
60
+ self.assertEqual(status1.recovered[0].pod_name, "pod-1")
61
+ self.assertEqual(status1.recovered[1].pod_name, "pod-3")
62
+ self.assertEqual(status1.unrecovered[0].pod_name, "pod-2")
63
+ self.assertEqual(status1.unrecovered[1].pod_name, "pod-4")
64
+
65
+ def test_init_podevent(self):
66
+ event = PodEvent()
67
+ self.assertIsInstance(event.timestamp, float)
68
+ # Verify that timestamp is close to the current time
69
+ self.assertLess(abs(event.timestamp - time.time()), 0.1)
70
+
71
+ def test_timestamp_setter_raises_attribute_error_podevent(self):
72
+ event = PodEvent()
73
+ with self.assertRaises(AttributeError):
74
+ event.timestamp = 123456789.0
75
+
76
+ def test_equality_podevent(self):
77
+ event1 = PodEvent()
78
+ event1.status = PodStatus.READY
79
+ # Create a second event with a similar timestamp
80
+ event2 = PodEvent()
81
+ event2.status = PodStatus.READY
82
+ # Patch the timestamp to be equal for a fair comparison
83
+ event2._timestamp = event1.timestamp
84
+ self.assertEqual(event1, event2)
85
+
86
+ def test_init_monitoredpod(self):
87
+ pod = MonitoredPod()
88
+ self.assertEqual(pod.namespace, "")
89
+ self.assertEqual(pod.name, "")
90
+ self.assertEqual(len(pod.status_changes), 0)
91
+
92
+ def test_init_podssnapshot(self):
93
+ snapshot = PodsSnapshot()
94
+ self.assertEqual(snapshot.resource_version, "")
95
+ self.assertEqual(len(snapshot.pods), 0)
96
+ self.assertEqual(len(snapshot.added_pods), 0)
97
+ self.assertEqual(len(snapshot.initial_pods), 0)
98
+
99
+ def test_find_rescheduled_pod_found_podssnapshot(self):
100
+ snapshot = PodsSnapshot()
101
+ parent_pod = MonitoredPod()
102
+ parent_pod.name = "parent-pod"
103
+
104
+ rescheduled_pod = MonitoredPod()
105
+ rescheduled_pod.name = "rescheduled-pod"
106
+ added_event = PodEvent()
107
+ added_event.status = PodStatus.ADDED
108
+ added_event.parent = "parent-pod"
109
+ rescheduled_pod.status_changes.append(added_event)
110
+
111
+ snapshot.pods = {
112
+ "parent-pod": parent_pod,
113
+ "rescheduled-pod": rescheduled_pod,
114
+ }
115
+ found_pod = snapshot._find_rescheduled_pod(parent_pod.name)
116
+ self.assertEqual(found_pod.name, "rescheduled-pod")
117
+
118
+ def test_find_rescheduled_pod_not_found_podssnapshot(self):
119
+ snapshot = PodsSnapshot()
120
+ parent_pod = MonitoredPod()
121
+ parent_pod.name = "parent-pod"
122
+ snapshot.pods = {"parent-pod": parent_pod}
123
+ found_pod = snapshot._find_rescheduled_pod(parent_pod.name)
124
+ self.assertIsNone(found_pod)
125
+
126
+ def test_get_pods_status_not_ready_unrecovered_podssnapshot(self):
127
+ snapshot = PodsSnapshot()
128
+ pod = MonitoredPod()
129
+ pod.name = "test-pod"
130
+ pod.namespace = "test-ns"
131
+ event = PodEvent()
132
+ event.status = PodStatus.NOT_READY
133
+ pod.status_changes.append(event)
134
+ snapshot.initial_pods = ["test-pod"]
135
+ snapshot.pods = {"test-pod": pod}
136
+
137
+ status = snapshot.get_pods_status()
138
+ self.assertEqual(len(status.unrecovered), 1)
139
+ self.assertEqual(len(status.recovered), 0)
140
+ self.assertEqual(status.unrecovered[0].pod_name, "test-pod")
141
+
142
+ def test_get_pods_status_not_ready_recovered_podssnapshot(self):
143
+ snapshot = PodsSnapshot()
144
+ pod = MonitoredPod()
145
+ pod.name = "test-pod"
146
+ pod.namespace = "test-ns"
147
+ not_ready_event = PodEvent()
148
+ not_ready_event.status = PodStatus.NOT_READY
149
+ not_ready_event._timestamp = time.time() - 10
150
+ ready_event = PodEvent()
151
+ ready_event.status = PodStatus.READY
152
+ ready_event._timestamp = time.time()
153
+ pod.status_changes.extend([not_ready_event, ready_event])
154
+ snapshot.initial_pods = ["test-pod"]
155
+ snapshot.pods = {"test-pod": pod}
156
+
157
+ status = snapshot.get_pods_status()
158
+ self.assertEqual(len(status.unrecovered), 0)
159
+ self.assertEqual(len(status.recovered), 1)
160
+ self.assertEqual(status.recovered[0].pod_name, "test-pod")
161
+ self.assertAlmostEqual(
162
+ status.recovered[0].pod_readiness_time, 10.0, places=1
163
+ )
164
+
165
+ def test_get_pods_status_deletion_scheduled_unrecovered_podssnapshot(
166
+ self,
167
+ ):
168
+ snapshot = PodsSnapshot()
169
+ pod = MonitoredPod()
170
+ pod.name = "test-pod"
171
+ pod.namespace = "test-ns"
172
+ event = PodEvent()
173
+ event.status = PodStatus.DELETION_SCHEDULED
174
+ pod.status_changes.append(event)
175
+ snapshot.initial_pods = ["test-pod"]
176
+ snapshot.pods = {"test-pod": pod}
177
+
178
+ status = snapshot.get_pods_status()
179
+ self.assertEqual(len(status.unrecovered), 1)
180
+ self.assertEqual(len(status.recovered), 0)
181
+ self.assertEqual(status.unrecovered[0].pod_name, "test-pod")
182
+
183
+ def test_get_pods_status_deletion_scheduled_recovered_podssnapshot(self):
184
+ snapshot = PodsSnapshot()
185
+
186
+ parent_pod = MonitoredPod()
187
+ parent_pod.name = "parent-pod"
188
+ parent_pod.namespace = "parent-ns"
189
+ deletion_event = PodEvent()
190
+ deletion_event.status = PodStatus.DELETION_SCHEDULED
191
+ deletion_event._timestamp = time.time() - 20
192
+ parent_pod.status_changes.append(deletion_event)
193
+
194
+ rescheduled_pod = MonitoredPod()
195
+ rescheduled_pod.name = "rescheduled-pod"
196
+ rescheduled_pod.namespace = "parent-ns"
197
+ added_event = PodEvent()
198
+ added_event.status = PodStatus.ADDED
199
+ added_event.parent = "parent-pod"
200
+ added_event._timestamp = time.time() - 10
201
+ ready_event = PodEvent()
202
+ ready_event.status = PodStatus.READY
203
+ ready_event._timestamp = time.time()
204
+ rescheduled_pod.status_changes.extend([added_event, ready_event])
205
+
206
+ snapshot.initial_pods = ["parent-pod"]
207
+ snapshot.pods = {
208
+ "parent-pod": parent_pod,
209
+ "rescheduled-pod": rescheduled_pod,
210
+ }
211
+
212
+ status = snapshot.get_pods_status()
213
+ self.assertEqual(len(status.unrecovered), 0)
214
+ self.assertEqual(len(status.recovered), 1)
215
+
216
+ recovered_pod = status.recovered[0]
217
+ self.assertEqual(recovered_pod.pod_name, "rescheduled-pod")
218
+ self.assertEqual(recovered_pod.namespace, "parent-ns")
219
+ self.assertAlmostEqual(
220
+ recovered_pod.pod_rescheduling_time, 10.0, delta=0.001
221
+ )
222
+ self.assertAlmostEqual(
223
+ recovered_pod.pod_readiness_time, 20.0, delta=0.001
224
+ )
225
+ self.assertAlmostEqual(
226
+ recovered_pod.total_recovery_time, 30.0, delta=0.001
227
+ )
228
+
229
+ def test_get_pods_status_deletion_scheduled_unrecovered_no_ready_podssnapshot( # NOQA
230
+ self,
231
+ ):
232
+ snapshot = PodsSnapshot()
233
+
234
+ parent_pod = MonitoredPod()
235
+ parent_pod.name = "parent-pod"
236
+ parent_pod.namespace = "parent-ns"
237
+ deletion_event = PodEvent()
238
+ deletion_event.status = PodStatus.DELETION_SCHEDULED
239
+ parent_pod.status_changes.append(deletion_event)
240
+
241
+ rescheduled_pod = MonitoredPod()
242
+ rescheduled_pod.name = "rescheduled-pod"
243
+ rescheduled_pod.namespace = "parent-ns"
244
+ added_event = PodEvent()
245
+ added_event.status = PodStatus.ADDED
246
+ added_event.parent = "parent-pod"
247
+ rescheduled_pod.status_changes.append(added_event)
248
+
249
+ snapshot.initial_pods = ["parent-pod"]
250
+ snapshot.pods = {
251
+ "parent-pod": parent_pod,
252
+ "rescheduled-pod": rescheduled_pod,
253
+ }
254
+
255
+ status = snapshot.get_pods_status()
256
+ self.assertEqual(len(status.unrecovered), 1)
257
+ self.assertEqual(len(status.recovered), 0)
258
+ self.assertEqual(status.unrecovered[0].pod_name, "rescheduled-pod")
259
+
260
+ def test_respawn_buggy_input(self):
261
+ buggy_json = """
262
+ {
263
+ "resource_version": "3370",
264
+ "pods": [
265
+ [
266
+ "delayed-3-bjojvqzxou",
267
+ {
268
+ "namespace": "test-ns-3-cprfhlhdox",
269
+ "name": "delayed-3-bjojvqzxou",
270
+ "status_changes": []
271
+ }
272
+ ],
273
+ [
274
+ "delayed-3-ogjrbicxis",
275
+ {
276
+ "namespace": "test-ns-3-cprfhlhdox",
277
+ "name": "delayed-3-ogjrbicxis",
278
+ "status_changes": [
279
+ {
280
+ "parent": null,
281
+ "status": "DELETION_SCHEDULED",
282
+ "timestamp": 1.0
283
+ }
284
+ ]
285
+ }
286
+ ],
287
+ [
288
+ "delayed-respawn-3-giuxefqrps",
289
+ {
290
+ "namespace": "test-ns-3-cprfhlhdox",
291
+ "name": "delayed-respawn-3-giuxefqrps",
292
+ "status_changes": [
293
+ {
294
+ "parent": null,
295
+ "status": "ADDED",
296
+ "timestamp": 1.0
297
+ },
298
+ {
299
+ "parent": null,
300
+ "status": "NOT_READY",
301
+ "timestamp": 2.0
302
+ },
303
+ {
304
+ "parent": null,
305
+ "status": "NOT_READY",
306
+ "timestamp": 3.0
307
+ },
308
+ {
309
+ "parent": null,
310
+ "status": "NOT_READY",
311
+ "timestamp": 4.0
312
+ }
313
+ ]
314
+ }
315
+ ]
316
+ ],
317
+ "added_pods": [
318
+ "delayed-respawn-3-giuxefqrps"
319
+ ],
320
+ "initial_pods": [
321
+ "delayed-3-bjojvqzxou",
322
+ "delayed-3-ogjrbicxis"
323
+ ]
324
+ }
325
+ """
326
+ snapshot = PodsSnapshot(json_str=buggy_json)
327
+ status = snapshot.get_pods_status()
328
+ self.assertEqual(len(status.unrecovered), 1)
329
+ self.assertEqual(
330
+ status.unrecovered[0].pod_name, "delayed-respawn-3-giuxefqrps"
331
+ )
332
+
333
+ another_buggy_json = """
334
+ {
335
+ "resource_version": "3584",
336
+ "pods": [
337
+ [
338
+ "delayed-1-fsghkeirdl",
339
+ {
340
+ "namespace": "test-ns-1-tyu-crsltvqclh",
341
+ "name": "delayed-1-fsghkeirdl",
342
+ "status_changes": [
343
+ {
344
+ "status": "DELETION_SCHEDULED",
345
+ "timestamp": 1756824656.2687368
346
+ }
347
+ ]
348
+ }
349
+ ],
350
+ [
351
+ "delayed-1-sxaelejdul",
352
+ {
353
+ "namespace": "test-ns-1-tyu-crsltvqclh",
354
+ "name": "delayed-1-sxaelejdul",
355
+ "status_changes": []
356
+ }
357
+ ],
358
+ [
359
+ "delayed-1-respawn-lcfmnhgxzs",
360
+ {
361
+ "namespace": "test-ns-1-tyu-crsltvqclh",
362
+ "name": "delayed-1-respawn-lcfmnhgxzs",
363
+ "status_changes": [
364
+ {
365
+ "status": "ADDED",
366
+ "timestamp": 1756824656.2621553
367
+ },
368
+ {
369
+ "status": "NOT_READY",
370
+ "timestamp": 1756824656.2722685
371
+ },
372
+ {
373
+ "status": "NOT_READY",
374
+ "timestamp": 1756824656.2776031
375
+ },
376
+ {
377
+ "status": "NOT_READY",
378
+ "timestamp": 1756824657.1519113
379
+ },
380
+ {
381
+ "status": "READY",
382
+ "timestamp": 1756824658.1827428
383
+ }
384
+ ]
385
+ }
386
+ ]
387
+ ],
388
+ "added_pods": [
389
+ "delayed-1-respawn-lcfmnhgxzs"
390
+ ],
391
+ "initial_pods": [
392
+ "delayed-1-fsghkeirdl",
393
+ "delayed-1-sxaelejdul"
394
+ ]
395
+ }
396
+ """
397
+ snapshot = PodsSnapshot(json_str=another_buggy_json)
398
+ status = snapshot.get_pods_status()
399
+ self.assertTrue(len(status.recovered), 1)
400
+ self.assertTrue(status.recovered[0].pod_readiness_time > 0)
401
+ # Tests a real case where the pod has been rescheduled before
402
+ # The event of the deletion has been emitted measuring a negative
403
+ # rescheduling time.
404
+ self.assertTrue(status.recovered[0].pod_rescheduling_time < 0)
405
+ self.assertTrue(status.recovered[0].total_recovery_time > 0)
@@ -414,20 +414,24 @@ class UtilFunctionTests(BaseTest):
414
414
  def test_get_ci_job_url(self):
415
415
 
416
416
  ci_job_url = utils.get_ci_job_url()
417
- print('ci job url' + str(ci_job_url))
417
+ print("ci job url" + str(ci_job_url))
418
418
  self.assertNotEqual(ci_job_url, "manual")
419
419
 
420
- github_run_id = os.getenv("GITHUB_RUN_ID","")
420
+ github_run_id = os.getenv("GITHUB_RUN_ID", "")
421
421
  os.environ["GITHUB_RUN_ID"] = ""
422
422
  os.environ["PROW_JOB_ID"] = "1953335493844275200"
423
- os.environ["BUILD_ID"] = "periodic-ci-redhat-chaos-prow-scripts-main-cr-4.19-nightly-krkn-hub-aws" # NOQA
424
- os.environ["JOB_NAME"] = "1953335493844275200"
423
+ os.environ["BUILD_ID"] = (
424
+ "periodic-ci-redhat-chaos-prow-scripts-main-cr-4.19-nightly-krkn-hub-aws" # NOQA
425
+ )
426
+ os.environ["JOB_NAME"] = "1953335493844275200"
425
427
  ci_job_url = utils.get_ci_job_url()
426
- print('ci job url' + str(ci_job_url))
428
+ print("ci job url" + str(ci_job_url))
427
429
  self.assertIn("prow.ci.openshift.org", ci_job_url)
428
430
  os.environ["PROW_JOB_ID"] = ""
429
- os.environ["BUILD_URL"] = "https://jenkins-csb-openshift-qe-mastern.dno.corp.redhat.com/job/scale-ci/job/e2e-benchmarking-multibranch-pipeline/job/kraken/" # NOQA
431
+ os.environ["BUILD_URL"] = (
432
+ "https://jenkins-csb-openshift-qe-mastern.dno.corp.redhat.com/job/scale-ci/job/e2e-benchmarking-multibranch-pipeline/job/kraken/" # NOQA
433
+ )
430
434
  ci_job_url = utils.get_ci_job_url()
431
- print('ci job url' + str(ci_job_url))
435
+ print("ci job url" + str(ci_job_url))
432
436
  self.assertEqual(ci_job_url, os.environ["BUILD_URL"])
433
- os.environ["GITHUB_RUN_ID"] = github_run_id
437
+ os.environ["GITHUB_RUN_ID"] = github_run_id
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: krkn-lib
3
- Version: 5.1.4
3
+ Version: 5.1.5
4
4
  Summary: Foundation library for Kraken
5
5
  License: Apache-2.0
6
6
  Author: Red Hat Chaos Team
@@ -65,4 +65,3 @@ of the [reStructuredText Docstring Format](https://peps.python.org/pep-0287/) co
65
65
 
66
66
 
67
67
 
68
-
@@ -1,11 +1,13 @@
1
+ krkn_lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1
2
  krkn_lib/aws_tests/__init__.py,sha256=vAyS1U3V-MTOqLgwlAK5W_gIT3VDxDrNzMRpaYe9fME,39
2
3
  krkn_lib/aws_tests/test_krkn_telemetry_kubernetes.py,sha256=VxE0MMo6pTVJj2iTJYs0Ei_jbVxOVXpupFLXrnlf02M,12633
3
4
  krkn_lib/aws_tests/test_krkn_telemetry_openshift.py,sha256=AE6nwWi2c2WqjU4mQ2Kr1XGr5FcmFbvaZALDDHpaEMQ,2151
4
5
  krkn_lib/elastic/__init__.py,sha256=ApLS0O18jzfu1Oe6Ym7XYlC1bFl9JTYO6VjFQflDlA0,36
5
6
  krkn_lib/elastic/krkn_elastic.py,sha256=YeZqEV61-icQTVrgA_0hDgD5L0zFmM3vmX_m7hXYOJU,8954
6
7
  krkn_lib/k8s/__init__.py,sha256=umPTRrPgLUdtHf9epWNcQaA7p9d3gZFtFiXQw36Pqug,39
7
- krkn_lib/k8s/krkn_kubernetes.py,sha256=ftvC7T-haCXsKD_f5wbfUq3B9rGzzp_qigOV1DlCzV8,127633
8
- krkn_lib/k8s/pods_monitor_pool.py,sha256=_wy-Z1CSjUd6PBQ6WIAm52UbE0s4FljEub1Cpygf3c4,8006
8
+ krkn_lib/k8s/krkn_kubernetes.py,sha256=ImFQzayZ5hGgYi13WO2lf4YCr96HaHsvaDyd1HSd73k,111590
9
+ krkn_lib/k8s/pod_monitor/__init__.py,sha256=QTdgv_mOqlB8ViVMRYWCPN0FxG5abxZoCeFUNqGfM3A,351
10
+ krkn_lib/k8s/pod_monitor/pod_monitor.py,sha256=OHm6f7Vl42oe0JYZJTVCO8MyBJVuXK1I5ZbIlSb6pPI,10786
9
11
  krkn_lib/k8s/templates/hog_pod.j2,sha256=PloumCIFkLpZCJPwNRf5kwcAfLH12AXNepQjdn942Wc,1650
10
12
  krkn_lib/k8s/templates/node_exec_pod.j2,sha256=hj0yryqooF8eZPdoC7-_4kF5OCvPagfItuRO4PhevaI,558
11
13
  krkn_lib/k8s/templates/service_hijacking_config_map.j2,sha256=Ma9W640yR-sRf9VgC5ha_enRjc-I1NAeAtNg4fglJAg,146
@@ -13,13 +15,15 @@ krkn_lib/k8s/templates/service_hijacking_pod.j2,sha256=urksFQ0RBqnux3gl7exEjQi-X
13
15
  krkn_lib/k8s/templates/syn_flood_pod.j2,sha256=ANCEhFZP6yzChGK52_01mV2k6cIb0JNR9ocSFHpxPT0,1132
14
16
  krkn_lib/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
17
  krkn_lib/models/elastic/__init__.py,sha256=B5B2XDHj9grxPBwcGm2SCXAyqtJHkywwDUFPvmrh_H4,30
16
- krkn_lib/models/elastic/models.py,sha256=3-jAjLpZaHtg1Y4csPcyMyOlTS80_hpcPCUKo25z8Fo,8650
18
+ krkn_lib/models/elastic/models.py,sha256=OVARKHsronuuueuXiPksHUsuObiZDbfswAsVyby7IDg,8637
17
19
  krkn_lib/models/k8s/__init__.py,sha256=B5B2XDHj9grxPBwcGm2SCXAyqtJHkywwDUFPvmrh_H4,30
18
- krkn_lib/models/k8s/models.py,sha256=o1-5_2WA4dCeY_dqJtGSedLt8stqsq7wd_o7bLaeO4A,10632
20
+ krkn_lib/models/k8s/models.py,sha256=NOscNnO9MumRS69gAUos8hXxB34aFv0YXNb9TPsgrPw,9846
19
21
  krkn_lib/models/krkn/__init__.py,sha256=B5B2XDHj9grxPBwcGm2SCXAyqtJHkywwDUFPvmrh_H4,30
20
22
  krkn_lib/models/krkn/models.py,sha256=npVBsyog_cPrGVHyDzdkAXhkmGlpsusSM_q9nCyN5rE,6762
23
+ krkn_lib/models/pod_monitor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
+ krkn_lib/models/pod_monitor/models.py,sha256=DBHdzX9bEjwuiccqx7nz2P0Hyxq7nCimaxBXvh1jDOs,8398
21
25
  krkn_lib/models/telemetry/__init__.py,sha256=B5B2XDHj9grxPBwcGm2SCXAyqtJHkywwDUFPvmrh_H4,30
22
- krkn_lib/models/telemetry/models.py,sha256=1lIt5NXcQrxtxzzMWggHYpyhpo_VrA8Hs4L6zVGFRPE,18532
26
+ krkn_lib/models/telemetry/models.py,sha256=UmO2lqQ2Ya0Xdw5jkdqlZWtiKQKEs0RPrD4S_QKhPYw,18538
23
27
  krkn_lib/ocp/__init__.py,sha256=CmweI-5lweWd8wG3q0y9m2ENAr9xvC7aldoJkjC3PQQ,38
24
28
  krkn_lib/ocp/krkn_openshift.py,sha256=8bUnJlkC1Yy2euWeOAPrXTCE22r6M8b0__g4NLhuaY4,17904
25
29
  krkn_lib/prometheus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -30,9 +34,9 @@ krkn_lib/telemetry/k8s/krkn_telemetry_kubernetes.py,sha256=dglDCGwbYc1HjiMCV01qH
30
34
  krkn_lib/telemetry/ocp/__init__.py,sha256=DgRL7JxW766o2L8m-E94ftgCdWhsgjURz6gAb9J9Rio,48
31
35
  krkn_lib/telemetry/ocp/krkn_telemetry_openshift.py,sha256=rpK-TJfpeJWUEQQgzpeUMhMvv3s1J9FrJtIOTUUPndY,9475
32
36
  krkn_lib/tests/__init__.py,sha256=_-mAJNNBGEod6A8tfckMP9loSOi_Bj4YHvpo93aqHME,33
33
- krkn_lib/tests/base_test.py,sha256=8nd4Q3HZvKqIjrFyuUsBPqcvS8-u49V6uDw2qT_dL5c,22100
37
+ krkn_lib/tests/base_test.py,sha256=2xeG0njyIkNTswEpFIzcwkDQx28R53f4DLEq38P3LHo,22238
34
38
  krkn_lib/tests/test_krkn_elastic.py,sha256=VFNu_NQLXEaq2rFR7BLwtynigVLuw8vhBNEUm53vpII,5612
35
- krkn_lib/tests/test_krkn_elastic_models.py,sha256=TYwbn9HXNM0c_NpUyyQ-VDXSE7oRhTxKG338Pz1yW8w,9083
39
+ krkn_lib/tests/test_krkn_elastic_models.py,sha256=q-ivGcvd72aS-Sam4-Jm1tNxLnigyugdSV-QOqtIE8M,9096
36
40
  krkn_lib/tests/test_krkn_kubernetes_check.py,sha256=7ElT--pJd52ql_WBAfWIa_p27bpWOH6gk_EEcCw_tXc,9333
37
41
  krkn_lib/tests/test_krkn_kubernetes_create.py,sha256=QGnO9bwrk_eRyH-4LaEZY6cxu9Qdlcc8CQDxwsnkr5A,2597
38
42
  krkn_lib/tests/test_krkn_kubernetes_delete.py,sha256=VXl-NhWrJejwxRhpeyjPVngggQsHeuJ17UfgdXxSF3k,5021
@@ -41,19 +45,19 @@ krkn_lib/tests/test_krkn_kubernetes_get.py,sha256=psTuDuvTTINPNK6Mnn69g9ZKNHKcWJ
41
45
  krkn_lib/tests/test_krkn_kubernetes_list.py,sha256=_qZJux76O_kDehFRcNDqjWX5edTrKY0_BSa-iky4NWA,5065
42
46
  krkn_lib/tests/test_krkn_kubernetes_misc.py,sha256=W-0I5BPIMVO7E3HMh5WsB1hVjq37uNb2YsX2EcN75AQ,13557
43
47
  krkn_lib/tests/test_krkn_kubernetes_models.py,sha256=4iUoLz-m2EHFwFOgGx2HBJ-dwRDhv_8wXSZ5TQd72-U,6291
44
- krkn_lib/tests/test_krkn_kubernetes_monitor.py,sha256=xgaAdGKA5Fdf41Oog3OIWnx2xvq9tv42qVCeZEE4omA,15982
45
- krkn_lib/tests/test_krkn_kubernetes_pods_monitor_pool.py,sha256=AN4_HjhofVmVYTzC6aTokz_wOH7lJGQrsLheI49LTso,5691
48
+ krkn_lib/tests/test_krkn_kubernetes_pods_monitor.py,sha256=-zgKVqIU2yL5iXHbJe9VXIQMTDvgImnGEVGzONsEBLk,21001
49
+ krkn_lib/tests/test_krkn_kubernetes_pods_monitor_models.py,sha256=R3Bn-R6C192xDpIJAZU5NKfn9UN2NCiQEDAbkyu9oBA,12794
46
50
  krkn_lib/tests/test_krkn_openshift.py,sha256=ZXHQ8VutqWsjfTdjdvfGGXqNnPL9ByfHKYjkQLkwl1w,4108
47
51
  krkn_lib/tests/test_krkn_prometheus.py,sha256=Yh3rHjomZGke6tgfebGyPt_L6di8a7QplPneTVmd70w,9308
48
52
  krkn_lib/tests/test_krkn_telemetry_models.py,sha256=J2PI4KAfZ7gSKhPC9DTJtlBKtObf69Kh_WbHcKbK8_Q,16219
49
- krkn_lib/tests/test_utils.py,sha256=4c48dCFvRVuACSt-PFrupdWKlgtKcowOwxyXzsn2NfM,14296
53
+ krkn_lib/tests/test_utils.py,sha256=ndGh4wlLDDVP8oJ_4iCThVQkU-IMqrWibqDuVDcK1-U,14346
50
54
  krkn_lib/tests/test_version.py,sha256=UepvN_1NixumE1mQssrv0G_Fp2bWibtvbDjEgmWoqe0,209
51
55
  krkn_lib/utils/__init__.py,sha256=1U4hxrKaKha2eWTrxyrvjNO3bZNoybQAy8Ne_Oglbxc,68
52
56
  krkn_lib/utils/functions.py,sha256=idKZNCFllAuHjZDGpT5LJESWeTU580NhLkp5KQL9PZo,16724
53
57
  krkn_lib/utils/safe_logger.py,sha256=NLVy7589hZqrxc-YhkEOhg8GBJ7jxKofAQotiyvyo-4,3687
54
58
  krkn_lib/version/__init__.py,sha256=0MLmj0ik-h9IVeq7zw8Xi5ux99DHfxJQ83Iv9Aqiubc,41
55
59
  krkn_lib/version/version.py,sha256=pdrCTedp-HDIYnG6e-AwN2nMK8vdbNTioqXxJpIZ6b8,80
56
- krkn_lib-5.1.4.dist-info/LICENSE,sha256=DOwG4OVfvD3FzuT8qbYH9my49OTbzzs8ATWU3RVnMuk,10173
57
- krkn_lib-5.1.4.dist-info/METADATA,sha256=kVZAgfy4s6_y4Pw9IW9xZnkokNZqYcnEZ5KUf6EsozQ,2710
58
- krkn_lib-5.1.4.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
59
- krkn_lib-5.1.4.dist-info/RECORD,,
60
+ krkn_lib-5.1.5.dist-info/LICENSE,sha256=DOwG4OVfvD3FzuT8qbYH9my49OTbzzs8ATWU3RVnMuk,10173
61
+ krkn_lib-5.1.5.dist-info/METADATA,sha256=LTYW9jzUp9-VojHxRq8k4-neVRozeOzEKA8mlXJREzE,2709
62
+ krkn_lib-5.1.5.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
63
+ krkn_lib-5.1.5.dist-info/RECORD,,