krkn-lib 5.1.8__py3-none-any.whl → 5.1.10__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 +39 -0
- krkn_lib/models/elastic/models.py +2 -0
- krkn_lib/models/telemetry/models.py +5 -0
- krkn_lib/tests/base_test.py +3 -0
- krkn_lib/tests/test_krkn_elastic_models.py +6 -0
- krkn_lib/tests/test_krkn_kubernetes_list.py +13 -0
- {krkn_lib-5.1.8.dist-info → krkn_lib-5.1.10.dist-info}/METADATA +4 -4
- {krkn_lib-5.1.8.dist-info → krkn_lib-5.1.10.dist-info}/RECORD +10 -10
- {krkn_lib-5.1.8.dist-info → krkn_lib-5.1.10.dist-info}/WHEEL +0 -0
- {krkn_lib-5.1.8.dist-info → krkn_lib-5.1.10.dist-info}/licenses/LICENSE +0 -0
krkn_lib/k8s/krkn_kubernetes.py
CHANGED
|
@@ -166,7 +166,13 @@ class KrknKubernetes:
|
|
|
166
166
|
|
|
167
167
|
client.Configuration.set_default(self.client_config)
|
|
168
168
|
self.watch_resource = watch.Watch()
|
|
169
|
+
# Get the logger for the kubernetes client
|
|
170
|
+
kubernetes_logger = logging.getLogger('kubernetes')
|
|
169
171
|
|
|
172
|
+
# Set the logging level to a higher level than DEBUG,
|
|
173
|
+
# such as INFO, WARNING, or ERROR
|
|
174
|
+
# This will effectively disable DEBUG level messages.
|
|
175
|
+
kubernetes_logger.setLevel(logging.INFO)
|
|
170
176
|
except OSError:
|
|
171
177
|
raise Exception(
|
|
172
178
|
"Invalid kube-config file: {0}. "
|
|
@@ -3141,3 +3147,36 @@ class KrknKubernetes:
|
|
|
3141
3147
|
pids_list = list(filter(None, pids_list))
|
|
3142
3148
|
return pids_list
|
|
3143
3149
|
return None
|
|
3150
|
+
|
|
3151
|
+
def list_pod_network_interfaces(
|
|
3152
|
+
self, pod_name: str, namespace: str, container_name: str = None
|
|
3153
|
+
) -> list[str]:
|
|
3154
|
+
"""
|
|
3155
|
+
Lists the network interfaces of a pod (Linux only)
|
|
3156
|
+
:param pod_name: the name of the pod
|
|
3157
|
+
:param namespace: the namespaces of the pod
|
|
3158
|
+
:param container_name: the container of the pod where the interfaces
|
|
3159
|
+
will be listed, if None the first will be picked
|
|
3160
|
+
:return: the list of the interfaces
|
|
3161
|
+
"""
|
|
3162
|
+
|
|
3163
|
+
if not self.check_if_pod_exists(pod_name, namespace):
|
|
3164
|
+
raise Exception(
|
|
3165
|
+
f"target pod {pod_name} does not exist in "
|
|
3166
|
+
f"namespace {namespace}"
|
|
3167
|
+
)
|
|
3168
|
+
|
|
3169
|
+
cmd = "ls /sys/class/net"
|
|
3170
|
+
nics_str = self.exec_cmd_in_pod(
|
|
3171
|
+
[cmd],
|
|
3172
|
+
pod_name,
|
|
3173
|
+
namespace,
|
|
3174
|
+
container_name,
|
|
3175
|
+
)
|
|
3176
|
+
nics = nics_str.split("\n")
|
|
3177
|
+
try:
|
|
3178
|
+
nics.remove("lo")
|
|
3179
|
+
nics.remove("")
|
|
3180
|
+
except ValueError:
|
|
3181
|
+
pass
|
|
3182
|
+
return nics
|
|
@@ -118,6 +118,7 @@ class ElasticHealthChecks(InnerDoc):
|
|
|
118
118
|
class ElasticVirtChecks(InnerDoc):
|
|
119
119
|
vm_name = Text()
|
|
120
120
|
ip_address = Text()
|
|
121
|
+
new_ip_address = Text()
|
|
121
122
|
namespace = Text()
|
|
122
123
|
node_name = Text()
|
|
123
124
|
status = Boolean()
|
|
@@ -243,6 +244,7 @@ class ElasticChaosRunTelemetry(Document):
|
|
|
243
244
|
ElasticVirtChecks(
|
|
244
245
|
vm_name=info.vm_name,
|
|
245
246
|
ip_address=info.ip_address,
|
|
247
|
+
new_ip_address=info.new_ip_address,
|
|
246
248
|
namespace=info.namespace,
|
|
247
249
|
node_name=info.node_name,
|
|
248
250
|
status=info.status,
|
|
@@ -436,6 +436,10 @@ class VirtCheck:
|
|
|
436
436
|
"""
|
|
437
437
|
Vm ip address
|
|
438
438
|
"""
|
|
439
|
+
new_ip_address: str
|
|
440
|
+
"""
|
|
441
|
+
New Ip address when vm restarts
|
|
442
|
+
"""
|
|
439
443
|
namespace: str
|
|
440
444
|
"""
|
|
441
445
|
Namespace
|
|
@@ -471,6 +475,7 @@ class VirtCheck:
|
|
|
471
475
|
self.start_timestamp = json_dict.get("start_timestamp", "")
|
|
472
476
|
self.end_timestamp = json_dict.get("end_timestamp", "")
|
|
473
477
|
self.duration = json_dict.get("duration", "")
|
|
478
|
+
self.new_ip_address = json_dict.get("new_ip_address", "")
|
|
474
479
|
|
|
475
480
|
|
|
476
481
|
@dataclass(order=False)
|
krkn_lib/tests/base_test.py
CHANGED
|
@@ -583,6 +583,7 @@ class BaseTest(unittest.TestCase):
|
|
|
583
583
|
"start_timestamp": "2025-03-12T14:57:34.555878",
|
|
584
584
|
"end_timestamp": "2025-03-12T14:57:54.904352",
|
|
585
585
|
"duration": 20.348474,
|
|
586
|
+
"new_ip_address": ""
|
|
586
587
|
},
|
|
587
588
|
{
|
|
588
589
|
"node_name": "h27-r660",
|
|
@@ -593,6 +594,7 @@ class BaseTest(unittest.TestCase):
|
|
|
593
594
|
"start_timestamp": "2025-03-12T14:57:34.759105",
|
|
594
595
|
"end_timestamp": "2025-03-12T14:57:54.904352",
|
|
595
596
|
"duration": 20.145247,
|
|
597
|
+
"new_ip_address": ""
|
|
596
598
|
},
|
|
597
599
|
{
|
|
598
600
|
"node_name": "h10-r660",
|
|
@@ -603,6 +605,7 @@ class BaseTest(unittest.TestCase):
|
|
|
603
605
|
"start_timestamp": "2025-03-12T14:57:35.308957",
|
|
604
606
|
"end_timestamp": "2025-03-12T14:57:54.904352",
|
|
605
607
|
"duration": 19.595395,
|
|
608
|
+
"new_ip_address": "0.0.0.3"
|
|
606
609
|
},
|
|
607
610
|
],
|
|
608
611
|
"total_node_count": 3,
|
|
@@ -222,6 +222,12 @@ class TestKrknElasticModels(BaseTest):
|
|
|
222
222
|
self.assertEqual(
|
|
223
223
|
elastic_telemetry.virt_checks[0].ip_address, "0.0.0.0"
|
|
224
224
|
)
|
|
225
|
+
self.assertEqual(
|
|
226
|
+
elastic_telemetry.virt_checks[0].new_ip_address, ""
|
|
227
|
+
)
|
|
228
|
+
self.assertEqual(
|
|
229
|
+
elastic_telemetry.virt_checks[2].new_ip_address, "0.0.0.3"
|
|
230
|
+
)
|
|
225
231
|
self.assertEqual(
|
|
226
232
|
elastic_telemetry.virt_checks[0].namespace, "benchmark-runner"
|
|
227
233
|
)
|
|
@@ -173,6 +173,19 @@ class KrknKubernetesTestsList(BaseTest):
|
|
|
173
173
|
len(schedulable_nodes), len(schedulable_nodes_empty_selector)
|
|
174
174
|
)
|
|
175
175
|
|
|
176
|
+
def test_list_pod_network_interfaces(self):
|
|
177
|
+
namespace = "test-cid-" + self.get_random_string(10)
|
|
178
|
+
base_pod_name = "test-name-" + self.get_random_string(10)
|
|
179
|
+
self.deploy_namespace(namespace, [])
|
|
180
|
+
self.deploy_fedtools(namespace=namespace, name=base_pod_name)
|
|
181
|
+
self.wait_pod(base_pod_name, namespace)
|
|
182
|
+
|
|
183
|
+
nics = self.lib_k8s.list_pod_network_interfaces(
|
|
184
|
+
base_pod_name, namespace
|
|
185
|
+
)
|
|
186
|
+
self.assertGreater(len(nics), 0)
|
|
187
|
+
self.assertTrue("eth0" in nics)
|
|
188
|
+
|
|
176
189
|
|
|
177
190
|
if __name__ == "__main__":
|
|
178
191
|
unittest.main()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: krkn-lib
|
|
3
|
-
Version: 5.1.
|
|
3
|
+
Version: 5.1.10
|
|
4
4
|
Summary: Foundation library for Kraken
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
License-File: LICENSE
|
|
@@ -19,10 +19,10 @@ Requires-Dist: base64io (>=1.0.3,<2.0.0)
|
|
|
19
19
|
Requires-Dist: coverage (>=7.6.12,<8.0.0)
|
|
20
20
|
Requires-Dist: cython (==3.0)
|
|
21
21
|
Requires-Dist: deprecation (==2.1.0)
|
|
22
|
-
Requires-Dist: elasticsearch (==
|
|
23
|
-
Requires-Dist: elasticsearch-dsl (==
|
|
22
|
+
Requires-Dist: elasticsearch (==8.19.1)
|
|
23
|
+
Requires-Dist: elasticsearch-dsl (==8.18.0)
|
|
24
24
|
Requires-Dist: kubeconfig (>=1.1.1,<2.0.0)
|
|
25
|
-
Requires-Dist: kubernetes (==
|
|
25
|
+
Requires-Dist: kubernetes (==34.1.0)
|
|
26
26
|
Requires-Dist: numpy (==1.26.4)
|
|
27
27
|
Requires-Dist: prometheus-api-client (>=0.5.4,<0.6.0)
|
|
28
28
|
Requires-Dist: pytz (>=2023.3,<2024.0)
|
|
@@ -5,7 +5,7 @@ krkn_lib/aws_tests/test_krkn_telemetry_openshift.py,sha256=AE6nwWi2c2WqjU4mQ2Kr1
|
|
|
5
5
|
krkn_lib/elastic/__init__.py,sha256=ApLS0O18jzfu1Oe6Ym7XYlC1bFl9JTYO6VjFQflDlA0,36
|
|
6
6
|
krkn_lib/elastic/krkn_elastic.py,sha256=YeZqEV61-icQTVrgA_0hDgD5L0zFmM3vmX_m7hXYOJU,8954
|
|
7
7
|
krkn_lib/k8s/__init__.py,sha256=umPTRrPgLUdtHf9epWNcQaA7p9d3gZFtFiXQw36Pqug,39
|
|
8
|
-
krkn_lib/k8s/krkn_kubernetes.py,sha256=
|
|
8
|
+
krkn_lib/k8s/krkn_kubernetes.py,sha256=ikfhqGeKWcaopOPkpTL00XdJS71F0p6fB86mc0v8Gs8,113564
|
|
9
9
|
krkn_lib/k8s/pod_monitor/__init__.py,sha256=QTdgv_mOqlB8ViVMRYWCPN0FxG5abxZoCeFUNqGfM3A,351
|
|
10
10
|
krkn_lib/k8s/pod_monitor/pod_monitor.py,sha256=ICWsbLtgBfqjJy-oUGDdEJKp66rq6DjOv1xUPcaay3A,10693
|
|
11
11
|
krkn_lib/k8s/templates/hog_pod.j2,sha256=PloumCIFkLpZCJPwNRf5kwcAfLH12AXNepQjdn942Wc,1650
|
|
@@ -15,7 +15,7 @@ krkn_lib/k8s/templates/service_hijacking_pod.j2,sha256=urksFQ0RBqnux3gl7exEjQi-X
|
|
|
15
15
|
krkn_lib/k8s/templates/syn_flood_pod.j2,sha256=ANCEhFZP6yzChGK52_01mV2k6cIb0JNR9ocSFHpxPT0,1132
|
|
16
16
|
krkn_lib/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
17
|
krkn_lib/models/elastic/__init__.py,sha256=B5B2XDHj9grxPBwcGm2SCXAyqtJHkywwDUFPvmrh_H4,30
|
|
18
|
-
krkn_lib/models/elastic/models.py,sha256=
|
|
18
|
+
krkn_lib/models/elastic/models.py,sha256=eb4j4H03O4X-X8ZOyWAifibGR1tEYs3kowV243qs5L0,8721
|
|
19
19
|
krkn_lib/models/k8s/__init__.py,sha256=B5B2XDHj9grxPBwcGm2SCXAyqtJHkywwDUFPvmrh_H4,30
|
|
20
20
|
krkn_lib/models/k8s/models.py,sha256=NOscNnO9MumRS69gAUos8hXxB34aFv0YXNb9TPsgrPw,9846
|
|
21
21
|
krkn_lib/models/krkn/__init__.py,sha256=B5B2XDHj9grxPBwcGm2SCXAyqtJHkywwDUFPvmrh_H4,30
|
|
@@ -23,7 +23,7 @@ krkn_lib/models/krkn/models.py,sha256=npVBsyog_cPrGVHyDzdkAXhkmGlpsusSM_q9nCyN5r
|
|
|
23
23
|
krkn_lib/models/pod_monitor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
24
|
krkn_lib/models/pod_monitor/models.py,sha256=MbBKwXV-dZxtM9wYp0ELLX_WIV3oysoMpZCuMKqONBo,8763
|
|
25
25
|
krkn_lib/models/telemetry/__init__.py,sha256=B5B2XDHj9grxPBwcGm2SCXAyqtJHkywwDUFPvmrh_H4,30
|
|
26
|
-
krkn_lib/models/telemetry/models.py,sha256=
|
|
26
|
+
krkn_lib/models/telemetry/models.py,sha256=BJNIachnIRXCvA8scyvVBo2OEE-NwGb8OjSnp6G7cQ8,18684
|
|
27
27
|
krkn_lib/ocp/__init__.py,sha256=CmweI-5lweWd8wG3q0y9m2ENAr9xvC7aldoJkjC3PQQ,38
|
|
28
28
|
krkn_lib/ocp/krkn_openshift.py,sha256=8bUnJlkC1Yy2euWeOAPrXTCE22r6M8b0__g4NLhuaY4,17904
|
|
29
29
|
krkn_lib/prometheus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -34,15 +34,15 @@ krkn_lib/telemetry/k8s/krkn_telemetry_kubernetes.py,sha256=dglDCGwbYc1HjiMCV01qH
|
|
|
34
34
|
krkn_lib/telemetry/ocp/__init__.py,sha256=DgRL7JxW766o2L8m-E94ftgCdWhsgjURz6gAb9J9Rio,48
|
|
35
35
|
krkn_lib/telemetry/ocp/krkn_telemetry_openshift.py,sha256=rpK-TJfpeJWUEQQgzpeUMhMvv3s1J9FrJtIOTUUPndY,9475
|
|
36
36
|
krkn_lib/tests/__init__.py,sha256=_-mAJNNBGEod6A8tfckMP9loSOi_Bj4YHvpo93aqHME,33
|
|
37
|
-
krkn_lib/tests/base_test.py,sha256=
|
|
37
|
+
krkn_lib/tests/base_test.py,sha256=3z4CMh0e1k0txwU1MyPQhkfn4X-qYiXs7hQcO-f-jDI,22394
|
|
38
38
|
krkn_lib/tests/test_krkn_elastic.py,sha256=VFNu_NQLXEaq2rFR7BLwtynigVLuw8vhBNEUm53vpII,5612
|
|
39
|
-
krkn_lib/tests/test_krkn_elastic_models.py,sha256=
|
|
39
|
+
krkn_lib/tests/test_krkn_elastic_models.py,sha256=eAl2kA20LWi3Q4eED6sDV8GYvxTy1G5uOhsnfVPOeWw,9303
|
|
40
40
|
krkn_lib/tests/test_krkn_kubernetes_check.py,sha256=z2TJlqMcs208jx6VbF9jTB0DXmTytXIFkZ88nAU8aTU,9403
|
|
41
41
|
krkn_lib/tests/test_krkn_kubernetes_create.py,sha256=QGnO9bwrk_eRyH-4LaEZY6cxu9Qdlcc8CQDxwsnkr5A,2597
|
|
42
42
|
krkn_lib/tests/test_krkn_kubernetes_delete.py,sha256=VXl-NhWrJejwxRhpeyjPVngggQsHeuJ17UfgdXxSF3k,5021
|
|
43
43
|
krkn_lib/tests/test_krkn_kubernetes_exec.py,sha256=BX3x-kSE-HGOZYNEosTDFbeHFBLDhnvyBC9Arai_Bf4,6927
|
|
44
44
|
krkn_lib/tests/test_krkn_kubernetes_get.py,sha256=psTuDuvTTINPNK6Mnn69g9ZKNHKcWJ2fFvw8Kx4g0wI,13064
|
|
45
|
-
krkn_lib/tests/test_krkn_kubernetes_list.py,sha256=
|
|
45
|
+
krkn_lib/tests/test_krkn_kubernetes_list.py,sha256=FplPIL-bw5oNaplCsed0tjqlBN7fj2MJN259f1-zjVo,6781
|
|
46
46
|
krkn_lib/tests/test_krkn_kubernetes_misc.py,sha256=W-0I5BPIMVO7E3HMh5WsB1hVjq37uNb2YsX2EcN75AQ,13557
|
|
47
47
|
krkn_lib/tests/test_krkn_kubernetes_models.py,sha256=4iUoLz-m2EHFwFOgGx2HBJ-dwRDhv_8wXSZ5TQd72-U,6291
|
|
48
48
|
krkn_lib/tests/test_krkn_kubernetes_pods_monitor.py,sha256=x4sfBxMWucNTxVJHR89q2ypVIMxt46iR5Mm6t8O7VMg,21149
|
|
@@ -57,7 +57,7 @@ krkn_lib/utils/functions.py,sha256=H4xA321fp-MzmKV97_n1FYsmqsm3dUw_hex0qHlKjYU,1
|
|
|
57
57
|
krkn_lib/utils/safe_logger.py,sha256=NLVy7589hZqrxc-YhkEOhg8GBJ7jxKofAQotiyvyo-4,3687
|
|
58
58
|
krkn_lib/version/__init__.py,sha256=0MLmj0ik-h9IVeq7zw8Xi5ux99DHfxJQ83Iv9Aqiubc,41
|
|
59
59
|
krkn_lib/version/version.py,sha256=pdrCTedp-HDIYnG6e-AwN2nMK8vdbNTioqXxJpIZ6b8,80
|
|
60
|
-
krkn_lib-5.1.
|
|
61
|
-
krkn_lib-5.1.
|
|
62
|
-
krkn_lib-5.1.
|
|
63
|
-
krkn_lib-5.1.
|
|
60
|
+
krkn_lib-5.1.10.dist-info/METADATA,sha256=5B1LKQELiAqcE45huoRLHfcH05j2RQMpCQM76Bv4Zjc,2784
|
|
61
|
+
krkn_lib-5.1.10.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
62
|
+
krkn_lib-5.1.10.dist-info/licenses/LICENSE,sha256=DOwG4OVfvD3FzuT8qbYH9my49OTbzzs8ATWU3RVnMuk,10173
|
|
63
|
+
krkn_lib-5.1.10.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|