krkn-lib 5.1.4__py3-none-any.whl → 5.1.6__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.
- krkn_lib/__init__.py +0 -0
- krkn_lib/k8s/krkn_kubernetes.py +12 -380
- krkn_lib/k8s/pod_monitor/__init__.py +12 -0
- krkn_lib/k8s/pod_monitor/pod_monitor.py +304 -0
- krkn_lib/models/elastic/models.py +5 -2
- krkn_lib/models/k8s/models.py +1 -25
- krkn_lib/models/pod_monitor/__init__.py +0 -0
- krkn_lib/models/pod_monitor/models.py +224 -0
- krkn_lib/models/telemetry/models.py +6 -4
- krkn_lib/tests/base_test.py +32 -31
- krkn_lib/tests/test_krkn_elastic_models.py +5 -4
- krkn_lib/tests/test_krkn_kubernetes_pods_monitor.py +513 -0
- krkn_lib/tests/test_krkn_kubernetes_pods_monitor_models.py +405 -0
- krkn_lib/tests/test_utils.py +12 -8
- {krkn_lib-5.1.4.dist-info → krkn_lib-5.1.6.dist-info}/METADATA +1 -2
- {krkn_lib-5.1.4.dist-info → krkn_lib-5.1.6.dist-info}/RECORD +18 -14
- krkn_lib/k8s/pods_monitor_pool.py +0 -202
- krkn_lib/tests/test_krkn_kubernetes_monitor.py +0 -367
- krkn_lib/tests/test_krkn_kubernetes_pods_monitor_pool.py +0 -128
- {krkn_lib-5.1.4.dist-info → krkn_lib-5.1.6.dist-info}/LICENSE +0 -0
- {krkn_lib-5.1.4.dist-info → krkn_lib-5.1.6.dist-info}/WHEEL +0 -0
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import time
|
|
2
|
-
|
|
3
|
-
from krkn_lib.k8s.pods_monitor_pool import PodsMonitorPool
|
|
4
|
-
from krkn_lib.tests import BaseTest
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class TestKrknKubernetesPodsMonitorPool(BaseTest):
|
|
8
|
-
def test_pods_monitor_pool(self):
|
|
9
|
-
namespace_1 = "test-pool-ns-0-" + self.get_random_string(10)
|
|
10
|
-
label_1 = "readiness-1"
|
|
11
|
-
delayed_1 = "delayed-pool-0-1-" + self.get_random_string(10)
|
|
12
|
-
delayed_2 = "delayed-pool-0-2-" + self.get_random_string(10)
|
|
13
|
-
|
|
14
|
-
delayed_1_respawn = "delayed-pool-0-r-2-" + self.get_random_string(10)
|
|
15
|
-
self.deploy_namespace(namespace_1, [])
|
|
16
|
-
self.deploy_delayed_readiness_pod(delayed_1, namespace_1, 0, label_1)
|
|
17
|
-
self.deploy_delayed_readiness_pod(delayed_2, namespace_1, 0, label_1)
|
|
18
|
-
|
|
19
|
-
namespace_2 = "test-pool-ns-1-" + self.get_random_string(10)
|
|
20
|
-
label_2 = "readiness-2"
|
|
21
|
-
delayed_3 = "delayed-pool-1-3-" + self.get_random_string(10)
|
|
22
|
-
delayed_4 = "delayed-pool-1-4-" + self.get_random_string(10)
|
|
23
|
-
delayed_3_respawn = "delayed-pool-1-r-4-" + self.get_random_string(10)
|
|
24
|
-
self.deploy_namespace(namespace_2, [])
|
|
25
|
-
self.deploy_delayed_readiness_pod(delayed_3, namespace_2, 0, label_2)
|
|
26
|
-
self.deploy_delayed_readiness_pod(delayed_4, namespace_2, 0, label_2)
|
|
27
|
-
|
|
28
|
-
namespace_3 = "test-pool-ns-2-" + self.get_random_string(10)
|
|
29
|
-
label_3 = "readiness-3"
|
|
30
|
-
delayed_5 = "delayed-pool-2-5-" + self.get_random_string(10)
|
|
31
|
-
delayed_6 = "delayed-pool-2-6-" + self.get_random_string(10)
|
|
32
|
-
delayed_5_respawn = "delayed-pool-2-r-5-" + self.get_random_string(10)
|
|
33
|
-
self.deploy_namespace(namespace_3, [])
|
|
34
|
-
self.deploy_delayed_readiness_pod(delayed_5, namespace_3, 0, label_3)
|
|
35
|
-
self.deploy_delayed_readiness_pod(delayed_6, namespace_3, 0, label_3)
|
|
36
|
-
# waiting the pods to become ready
|
|
37
|
-
time.sleep(10)
|
|
38
|
-
print("starting monitoring")
|
|
39
|
-
pod_delay = 1
|
|
40
|
-
monitor_timeout = 30
|
|
41
|
-
|
|
42
|
-
pool = PodsMonitorPool(self.lib_k8s)
|
|
43
|
-
|
|
44
|
-
pool.select_and_monitor_by_label(
|
|
45
|
-
label_selector=f"test={label_1}",
|
|
46
|
-
max_timeout=monitor_timeout,
|
|
47
|
-
field_selector="status.phase=Running",
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
pool.select_and_monitor_by_namespace_pattern_and_label(
|
|
51
|
-
namespace_pattern="^test-pool-ns-1-.*",
|
|
52
|
-
label_selector=f"test={label_2}",
|
|
53
|
-
max_timeout=monitor_timeout,
|
|
54
|
-
field_selector="status.phase=Running",
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
pool.select_and_monitor_by_name_pattern_and_namespace_pattern(
|
|
58
|
-
pod_name_pattern="^delayed-pool-2-.*",
|
|
59
|
-
namespace_pattern="^test-pool-ns-2-.*",
|
|
60
|
-
max_timeout=monitor_timeout,
|
|
61
|
-
field_selector="status.phase=Running",
|
|
62
|
-
)
|
|
63
|
-
|
|
64
|
-
self.background_delete_pod(delayed_1, namespace_1)
|
|
65
|
-
self.background_delete_pod(delayed_3, namespace_2)
|
|
66
|
-
self.background_delete_pod(delayed_5, namespace_3)
|
|
67
|
-
# these two will recover the previously deleted pods
|
|
68
|
-
self.deploy_delayed_readiness_pod(
|
|
69
|
-
delayed_1_respawn, namespace_1, pod_delay, label_1
|
|
70
|
-
)
|
|
71
|
-
self.deploy_delayed_readiness_pod(
|
|
72
|
-
delayed_3_respawn, namespace_2, pod_delay, label_2
|
|
73
|
-
)
|
|
74
|
-
# this one will not recover
|
|
75
|
-
self.deploy_delayed_readiness_pod(
|
|
76
|
-
delayed_5_respawn, namespace_3, monitor_timeout + 5, label_3
|
|
77
|
-
)
|
|
78
|
-
start_time = time.time()
|
|
79
|
-
status = pool.join()
|
|
80
|
-
# added 1 second threshold that may
|
|
81
|
-
# happen because of intermediate api call delay
|
|
82
|
-
self.assertTrue(0 < time.time() - start_time < monitor_timeout + 1)
|
|
83
|
-
self.background_delete_pod(delayed_1_respawn, namespace_1)
|
|
84
|
-
self.background_delete_pod(delayed_2, namespace_1)
|
|
85
|
-
self.background_delete_pod(delayed_3_respawn, namespace_2)
|
|
86
|
-
|
|
87
|
-
self.background_delete_pod(delayed_4, namespace_2)
|
|
88
|
-
self.background_delete_pod(delayed_5_respawn, namespace_3)
|
|
89
|
-
self.background_delete_pod(delayed_6, namespace_3)
|
|
90
|
-
print('staus' + str(status))
|
|
91
|
-
self.assertIsNone(status.error)
|
|
92
|
-
self.assertEqual(len(status.recovered), 2)
|
|
93
|
-
self.assertEqual(len(status.unrecovered), 1)
|
|
94
|
-
self.lib_k8s.delete_namespace(namespace_1)
|
|
95
|
-
self.lib_k8s.delete_namespace(namespace_2)
|
|
96
|
-
self.lib_k8s.delete_namespace(namespace_3)
|
|
97
|
-
|
|
98
|
-
def test_cancel(self):
|
|
99
|
-
namespace_1 = "test-pool-ns-0-" + self.get_random_string(10)
|
|
100
|
-
label_1 = "readiness-1"
|
|
101
|
-
delayed_1 = "delayed-pool-0-1-" + self.get_random_string(10)
|
|
102
|
-
delayed_2 = "delayed-pool-0-2-" + self.get_random_string(10)
|
|
103
|
-
|
|
104
|
-
delayed_1_respawn = "delayed-pool-0-r-2-" + self.get_random_string(10)
|
|
105
|
-
self.deploy_namespace(namespace_1, [])
|
|
106
|
-
self.deploy_delayed_readiness_pod(delayed_1, namespace_1, 0, label_1)
|
|
107
|
-
self.deploy_delayed_readiness_pod(delayed_2, namespace_1, 0, label_1)
|
|
108
|
-
monitor_timeout = 60
|
|
109
|
-
pool = PodsMonitorPool(self.lib_k8s)
|
|
110
|
-
|
|
111
|
-
pool.select_and_monitor_by_label(
|
|
112
|
-
label_selector=f"test={label_1}",
|
|
113
|
-
max_timeout=monitor_timeout,
|
|
114
|
-
field_selector="status.phase=Running",
|
|
115
|
-
)
|
|
116
|
-
self.background_delete_pod(delayed_1, namespace_1)
|
|
117
|
-
self.deploy_delayed_readiness_pod(
|
|
118
|
-
delayed_1_respawn, namespace_1, monitor_timeout + 5, label_1
|
|
119
|
-
)
|
|
120
|
-
start_time = time.time()
|
|
121
|
-
pool.cancel()
|
|
122
|
-
_ = pool.join()
|
|
123
|
-
end_time = time.time() - start_time
|
|
124
|
-
self.background_delete_pod(delayed_1_respawn, namespace_1)
|
|
125
|
-
self.background_delete_pod(delayed_2, namespace_1)
|
|
126
|
-
# give the time to wrap up the threads and return
|
|
127
|
-
self.assertLess(end_time, monitor_timeout)
|
|
128
|
-
self.lib_k8s.delete_namespace(namespace_1)
|
|
File without changes
|
|
File without changes
|