krkn-lib 5.0.2__py3-none-any.whl → 5.1.0__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/k8s/krkn_kubernetes.py +207 -96
- krkn_lib/k8s/pods_monitor_pool.py +14 -3
- krkn_lib/k8s/templates/node_exec_pod.j2 +6 -1
- krkn_lib/models/elastic/models.py +1 -1
- krkn_lib/models/k8s/models.py +4 -0
- krkn_lib/prometheus/krkn_prometheus.py +1 -1
- krkn_lib/telemetry/k8s/krkn_telemetry_kubernetes.py +0 -2
- krkn_lib/tests/base_test.py +7 -0
- krkn_lib/tests/test_krkn_elastic_models.py +1 -1
- krkn_lib/tests/test_krkn_kubernetes_check.py +2 -3
- krkn_lib/tests/test_krkn_kubernetes_create.py +3 -5
- krkn_lib/tests/test_krkn_kubernetes_delete.py +2 -3
- krkn_lib/tests/test_krkn_kubernetes_get.py +104 -5
- krkn_lib/tests/test_krkn_kubernetes_list.py +13 -0
- krkn_lib/tests/test_krkn_kubernetes_misc.py +2 -2
- krkn_lib/tests/test_krkn_kubernetes_models.py +1 -1
- krkn_lib/tests/test_krkn_kubernetes_monitor.py +168 -137
- krkn_lib/tests/test_krkn_kubernetes_pods_monitor_pool.py +7 -3
- krkn_lib/tests/test_krkn_prometheus.py +133 -128
- krkn_lib/tests/test_krkn_telemetry_kubernetes.py +57 -51
- krkn_lib/tests/test_version.py +1 -1
- {krkn_lib-5.0.2.dist-info → krkn_lib-5.1.0.dist-info}/METADATA +1 -1
- {krkn_lib-5.0.2.dist-info → krkn_lib-5.1.0.dist-info}/RECORD +25 -25
- {krkn_lib-5.0.2.dist-info → krkn_lib-5.1.0.dist-info}/LICENSE +0 -0
- {krkn_lib-5.0.2.dist-info → krkn_lib-5.1.0.dist-info}/WHEEL +0 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
|
|
3
3
|
from elasticsearch_dsl import (
|
|
4
|
-
Boolean,
|
|
5
4
|
Date,
|
|
6
5
|
Document,
|
|
7
6
|
Float,
|
|
@@ -10,6 +9,7 @@ from elasticsearch_dsl import (
|
|
|
10
9
|
Keyword,
|
|
11
10
|
Nested,
|
|
12
11
|
Text,
|
|
12
|
+
Boolean,
|
|
13
13
|
)
|
|
14
14
|
|
|
15
15
|
from krkn_lib.models.telemetry import ChaosRunTelemetry
|
krkn_lib/models/k8s/models.py
CHANGED
|
@@ -100,12 +100,10 @@ class KrknTelemetryKubernetes:
|
|
|
100
100
|
node_infos, taints = self.__kubecli.get_nodes_infos()
|
|
101
101
|
chaos_telemetry.node_summary_infos = node_infos
|
|
102
102
|
chaos_telemetry.cluster_version = self.__kubecli.get_version()
|
|
103
|
-
|
|
104
103
|
chaos_telemetry.major_version = chaos_telemetry.cluster_version[1:5]
|
|
105
104
|
chaos_telemetry.node_taints = taints
|
|
106
105
|
for info in node_infos:
|
|
107
106
|
chaos_telemetry.total_node_count += info.count
|
|
108
|
-
|
|
109
107
|
chaos_telemetry.job_status = True
|
|
110
108
|
for scenario in chaos_telemetry.scenarios:
|
|
111
109
|
if scenario.exit_status > 0:
|
krkn_lib/tests/base_test.py
CHANGED
|
@@ -491,6 +491,13 @@ class BaseTest(unittest.TestCase):
|
|
|
491
491
|
thread.daemon = True
|
|
492
492
|
thread.start()
|
|
493
493
|
|
|
494
|
+
def background_delete_ns(self, namespace: str):
|
|
495
|
+
thread = threading.Thread(
|
|
496
|
+
target=self.lib_k8s.delete_namespace, args=(namespace,)
|
|
497
|
+
)
|
|
498
|
+
thread.daemon = True
|
|
499
|
+
thread.start()
|
|
500
|
+
|
|
494
501
|
def get_ChaosRunTelemetry_json(self, run_uuid: str) -> dict:
|
|
495
502
|
example_data = {
|
|
496
503
|
"scenarios": [
|
|
@@ -2,10 +2,9 @@ import logging
|
|
|
2
2
|
import time
|
|
3
3
|
import unittest
|
|
4
4
|
|
|
5
|
-
from kubernetes.client import ApiException
|
|
6
|
-
|
|
7
|
-
from krkn_lib.k8s import ApiRequestException
|
|
8
5
|
from krkn_lib.tests import BaseTest
|
|
6
|
+
from krkn_lib.k8s import ApiRequestException
|
|
7
|
+
from kubernetes.client import ApiException
|
|
9
8
|
|
|
10
9
|
|
|
11
10
|
class KrknKubernetesTestsCheck(BaseTest):
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
import tempfile
|
|
3
2
|
import unittest
|
|
4
|
-
|
|
5
3
|
import yaml
|
|
6
|
-
|
|
7
|
-
from kubernetes.client import ApiException
|
|
8
|
-
|
|
4
|
+
import tempfile
|
|
9
5
|
from krkn_lib.tests import BaseTest
|
|
6
|
+
from kubernetes.client import ApiException
|
|
7
|
+
from jinja2 import Environment, FileSystemLoader
|
|
10
8
|
|
|
11
9
|
|
|
12
10
|
class KrknKubernetesTestsCreate(BaseTest):
|
|
@@ -2,10 +2,9 @@ import logging
|
|
|
2
2
|
import time
|
|
3
3
|
import unittest
|
|
4
4
|
|
|
5
|
-
from kubernetes.client import ApiException
|
|
6
|
-
|
|
7
|
-
from krkn_lib.k8s import ApiRequestException
|
|
8
5
|
from krkn_lib.tests import BaseTest
|
|
6
|
+
from krkn_lib.k8s import ApiRequestException
|
|
7
|
+
from kubernetes.client import ApiException
|
|
9
8
|
|
|
10
9
|
|
|
11
10
|
class KrknKubernetesTestsDelete(BaseTest):
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
import os
|
|
3
2
|
import random
|
|
4
3
|
import re
|
|
5
4
|
import time
|
|
5
|
+
import os
|
|
6
6
|
import unittest
|
|
7
7
|
|
|
8
|
-
from kubernetes import config
|
|
9
|
-
from kubernetes.client import ApiException
|
|
10
|
-
|
|
11
|
-
from krkn_lib.k8s import ApiRequestException, KrknKubernetes
|
|
12
8
|
from krkn_lib.models.telemetry import ChaosRunTelemetry
|
|
13
9
|
from krkn_lib.tests import BaseTest
|
|
10
|
+
from kubernetes import config
|
|
11
|
+
from krkn_lib.k8s import ApiRequestException, KrknKubernetes
|
|
12
|
+
from kubernetes.client import ApiException
|
|
14
13
|
|
|
15
14
|
|
|
16
15
|
class KrknKubernetesTestsGet(BaseTest):
|
|
@@ -55,8 +54,22 @@ class KrknKubernetesTestsGet(BaseTest):
|
|
|
55
54
|
# test with label_selector filter
|
|
56
55
|
results = self.lib_k8s.get_all_pods("random=%s" % random_label)
|
|
57
56
|
self.assertTrue(len(results) == 1)
|
|
57
|
+
self.assertEqual(results[0][1], namespace)
|
|
58
58
|
self.assertEqual(results[0][0], "kraken-deployment")
|
|
59
|
+
self.wait_pod("kraken-deployment", namespace)
|
|
60
|
+
results = self.lib_k8s.get_all_pods(
|
|
61
|
+
"random=%s" % random_label, field_selector="status.phase=Running"
|
|
62
|
+
)
|
|
63
|
+
print("resuls" + str(results))
|
|
64
|
+
self.assertTrue(len(results) == 1)
|
|
59
65
|
self.assertEqual(results[0][1], namespace)
|
|
66
|
+
self.assertEqual(results[0][0], "kraken-deployment")
|
|
67
|
+
|
|
68
|
+
results = self.lib_k8s.get_all_pods(
|
|
69
|
+
field_selector="status.phase=Running"
|
|
70
|
+
)
|
|
71
|
+
self.assertTrue(len(results) >= 1)
|
|
72
|
+
|
|
60
73
|
self.pod_delete_queue.put(["kraken-deployment", namespace])
|
|
61
74
|
|
|
62
75
|
def test_get_pod_log(self):
|
|
@@ -135,6 +148,9 @@ class KrknKubernetesTestsGet(BaseTest):
|
|
|
135
148
|
self.assertIsNotNone(info.podIP)
|
|
136
149
|
self.assertIsNotNone(info.nodeName)
|
|
137
150
|
self.assertIsNotNone(info.containers)
|
|
151
|
+
|
|
152
|
+
info = self.lib_k8s.get_pod_info("test1", namespace)
|
|
153
|
+
self.assertIsNone(info)
|
|
138
154
|
except Exception as e:
|
|
139
155
|
logging.error("test raised exception {0}".format(str(e)))
|
|
140
156
|
self.assertTrue(False)
|
|
@@ -247,6 +263,89 @@ class KrknKubernetesTestsGet(BaseTest):
|
|
|
247
263
|
with self.assertRaises(Exception):
|
|
248
264
|
ip_address = self.lib_k8s.get_node_ip("not_existing")
|
|
249
265
|
|
|
266
|
+
def test_get_pod_container_id(self):
|
|
267
|
+
namespace = "test-cid-" + self.get_random_string(10)
|
|
268
|
+
name = "test-name-" + self.get_random_string(10)
|
|
269
|
+
self.deploy_namespace(namespace, [])
|
|
270
|
+
self.deploy_fedtools(namespace=namespace, name=name)
|
|
271
|
+
self.wait_pod(name, namespace)
|
|
272
|
+
container_ids = self.lib_k8s.get_container_ids(
|
|
273
|
+
pod_name=name, namespace=namespace
|
|
274
|
+
)
|
|
275
|
+
self.assertTrue(len(container_ids) > 0)
|
|
276
|
+
container_ids = self.lib_k8s.get_container_ids(
|
|
277
|
+
pod_name="do_not_exists", namespace="do_not_exists"
|
|
278
|
+
)
|
|
279
|
+
self.assertTrue(len(container_ids) == 0)
|
|
280
|
+
|
|
281
|
+
def test_get_pod_pids(self):
|
|
282
|
+
namespace = "test-cid-" + self.get_random_string(10)
|
|
283
|
+
base_pod_name = "test-name-" + self.get_random_string(10)
|
|
284
|
+
target_pod_name = "test-name-" + self.get_random_string(10)
|
|
285
|
+
|
|
286
|
+
self.deploy_namespace(namespace, [])
|
|
287
|
+
self.deploy_fedtools(namespace=namespace, name=base_pod_name)
|
|
288
|
+
self.deploy_fedtools(namespace=namespace, name=target_pod_name)
|
|
289
|
+
|
|
290
|
+
self.wait_pod(base_pod_name, namespace)
|
|
291
|
+
self.wait_pod(target_pod_name, namespace)
|
|
292
|
+
|
|
293
|
+
container_id = self.lib_k8s.get_container_ids(
|
|
294
|
+
pod_name=target_pod_name, namespace=namespace
|
|
295
|
+
)
|
|
296
|
+
pids = self.lib_k8s.get_pod_pids(
|
|
297
|
+
base_pod_name,
|
|
298
|
+
namespace,
|
|
299
|
+
base_pod_name,
|
|
300
|
+
target_pod_name,
|
|
301
|
+
namespace,
|
|
302
|
+
container_id[0],
|
|
303
|
+
)
|
|
304
|
+
|
|
305
|
+
self.assertIsNotNone(pids)
|
|
306
|
+
self.assertTrue(isinstance(pids, list))
|
|
307
|
+
self.assertTrue(len(pids) > 0)
|
|
308
|
+
|
|
309
|
+
pids = self.lib_k8s.get_pod_pids(
|
|
310
|
+
base_pod_name,
|
|
311
|
+
namespace,
|
|
312
|
+
base_pod_name,
|
|
313
|
+
target_pod_name,
|
|
314
|
+
namespace,
|
|
315
|
+
"does_not_exist",
|
|
316
|
+
)
|
|
317
|
+
self.assertIsNone(pids)
|
|
318
|
+
|
|
319
|
+
with self.assertRaises(Exception):
|
|
320
|
+
_ = self.lib_k8s.get_pod_pids(
|
|
321
|
+
"does_not_exist",
|
|
322
|
+
namespace,
|
|
323
|
+
base_pod_name,
|
|
324
|
+
target_pod_name,
|
|
325
|
+
namespace,
|
|
326
|
+
container_id[0],
|
|
327
|
+
)
|
|
328
|
+
|
|
329
|
+
with self.assertRaises(Exception):
|
|
330
|
+
_ = self.lib_k8s.get_pod_pids(
|
|
331
|
+
base_pod_name,
|
|
332
|
+
namespace,
|
|
333
|
+
base_pod_name,
|
|
334
|
+
"does_not_exist",
|
|
335
|
+
namespace,
|
|
336
|
+
container_id[0],
|
|
337
|
+
)
|
|
338
|
+
|
|
339
|
+
with self.assertRaises(Exception):
|
|
340
|
+
_ = self.lib_k8s.get_pod_pids(
|
|
341
|
+
base_pod_name,
|
|
342
|
+
namespace,
|
|
343
|
+
"does_not_exist",
|
|
344
|
+
target_pod_name,
|
|
345
|
+
namespace,
|
|
346
|
+
container_id[0],
|
|
347
|
+
)
|
|
348
|
+
|
|
250
349
|
|
|
251
350
|
if __name__ == "__main__":
|
|
252
351
|
unittest.main()
|
|
@@ -70,6 +70,19 @@ class KrknKubernetesTestsList(BaseTest):
|
|
|
70
70
|
pods = self.lib_k8s.list_pods(namespace=namespace)
|
|
71
71
|
self.assertTrue(len(pods) == 1)
|
|
72
72
|
self.assertIn("kraken-deployment", pods)
|
|
73
|
+
|
|
74
|
+
self.wait_pod(pods[0], namespace)
|
|
75
|
+
|
|
76
|
+
pods = self.lib_k8s.list_pods(
|
|
77
|
+
namespace=namespace, field_selector="status.phase=Running"
|
|
78
|
+
)
|
|
79
|
+
self.assertTrue(len(pods) == 1)
|
|
80
|
+
self.assertIn("kraken-deployment", pods)
|
|
81
|
+
|
|
82
|
+
pods = self.lib_k8s.list_pods(
|
|
83
|
+
namespace=namespace, field_selector="status.phase=Terminating"
|
|
84
|
+
)
|
|
85
|
+
self.assertTrue(len(pods) == 0)
|
|
73
86
|
self.pod_delete_queue.put(["kraken-deployment", namespace])
|
|
74
87
|
|
|
75
88
|
def test_list_ready_nodes(self):
|
|
@@ -6,11 +6,11 @@ import time
|
|
|
6
6
|
import unittest
|
|
7
7
|
|
|
8
8
|
import yaml
|
|
9
|
-
from kubernetes.client import ApiException
|
|
10
|
-
from tzlocal import get_localzone
|
|
11
9
|
|
|
12
10
|
from krkn_lib.models.krkn import HogConfig, HogType
|
|
13
11
|
from krkn_lib.tests import BaseTest
|
|
12
|
+
from tzlocal import get_localzone
|
|
13
|
+
from kubernetes.client import ApiException
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class KrknKubernetesTestsMisc(BaseTest):
|