Skip to content

Commit 307051f

Browse files
authored
[IMPORTANT] Refactoring, Krkn Scenario Plugin API introduction (#123)
* KrknTelemetryOpenshift refactoring Signed-off-by: Tullio Sebastiani <[email protected]> KrknTelemetryOpenshift refactoring Signed-off-by: Tullio Sebastiani <[email protected]> refactoring Signed-off-by: Tullio Sebastiani <[email protected]> * ocp cli fix Signed-off-by: Tullio Sebastiani <[email protected]> --------- Signed-off-by: Tullio Sebastiani <[email protected]>
1 parent b9c7022 commit 307051f

File tree

3 files changed

+64
-26
lines changed

3 files changed

+64
-26
lines changed

src/krkn_lib/k8s/krkn_kubernetes.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2143,19 +2143,19 @@ def get_nodes_infos(self) -> (list[NodeInfo], list[Taint]):
21432143
node_info.instance_type = "unknown"
21442144

21452145
if node_type_infra_label in node.metadata.labels.keys():
2146-
node_info.nodes_type= "infra"
2146+
node_info.nodes_type = "infra"
21472147
elif node_type_worker_label in node.metadata.labels.keys():
2148-
node_info.nodes_type= "worker"
2148+
node_info.nodes_type = "worker"
21492149
elif node_type_master_label in node.metadata.labels.keys():
2150-
node_info.nodes_type= "master"
2150+
node_info.nodes_type = "master"
21512151
elif node_type_workload_label in node.metadata.labels.keys():
2152-
node_info.nodes_type= "workload"
2152+
node_info.nodes_type = "workload"
21532153
elif (
21542154
node_type_application_label in node.metadata.labels.keys()
21552155
):
2156-
node_info.nodes_type= "application"
2156+
node_info.nodes_type = "application"
21572157
else:
2158-
node_info.nodes_type= "unknown"
2158+
node_info.nodes_type = "unknown"
21592159

21602160
node_info.architecture = node.status.node_info.architecture
21612161
node_info.architecture = node.status.node_info.architecture

src/krkn_lib/telemetry/k8s/krkn_telemetry_kubernetes.py

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,28 +22,56 @@
2222

2323

2424
class KrknTelemetryKubernetes:
25-
kubecli: KrknKubernetes = None
25+
__kubecli: KrknKubernetes = None
26+
__krkn_telemetry_config: dict[str, any] = None
27+
__telemetry_request_id: str = ""
2628
safe_logger: SafeLogger = None
2729
default_telemetry_group = "default"
28-
krkn_telemetry_config: dict[str, any] = None
2930

3031
def __init__(
3132
self,
3233
safe_logger: SafeLogger,
3334
lib_kubernetes: KrknKubernetes,
3435
krkn_telemetry_config: dict[str, any] = None,
36+
telemetry_request_id: str = "",
3537
):
3638
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
3739
urllib3.disable_warnings(DeprecationWarning)
3840
warnings.filterwarnings(
3941
action="ignore", message="unclosed", category=ResourceWarning
4042
)
41-
self.kubecli = lib_kubernetes
43+
self.__kubecli = lib_kubernetes
4244
self.safe_logger = safe_logger
45+
self.__telemetry_request_id = telemetry_request_id
4346
if not krkn_telemetry_config:
44-
self.krkn_telemetry_config = {}
47+
self.__krkn_telemetry_config = {}
4548
else:
46-
self.krkn_telemetry_config = krkn_telemetry_config
49+
self.__krkn_telemetry_config = krkn_telemetry_config
50+
51+
def get_lib_kubernetes(self) -> KrknKubernetes:
52+
"""
53+
Returns the instance of KrknKubernetes
54+
55+
:return: a KrknKubernetes instance
56+
"""
57+
return self.__kubecli
58+
59+
def get_telemetry_config(self) -> dict[str, any]:
60+
"""
61+
Returns the telemetry config section from config.yaml
62+
63+
:return: the telemetry config section
64+
"""
65+
return self.__krkn_telemetry_config
66+
67+
def get_telemetry_request_id(self) -> str:
68+
"""
69+
Gets the telemetry request id that represents the path
70+
on S3 where the telemetry data is uploaded
71+
72+
:return: the krkn telemetry id
73+
"""
74+
return self.__telemetry_request_id
4775

4876
def collect_cluster_metadata(self, chaos_telemetry: ChaosRunTelemetry):
4977
"""
@@ -61,7 +89,7 @@ def collect_cluster_metadata(self, chaos_telemetry: ChaosRunTelemetry):
6189
self.safe_logger.info("collecting telemetry data, please wait....")
6290

6391
chaos_telemetry.kubernetes_objects_count = (
64-
self.kubecli.get_all_kubernetes_object_count(
92+
self.__kubecli.get_all_kubernetes_object_count(
6593
[
6694
"Deployment",
6795
"Pod",
@@ -72,9 +100,9 @@ def collect_cluster_metadata(self, chaos_telemetry: ChaosRunTelemetry):
72100
]
73101
)
74102
)
75-
node_infos, taints = self.kubecli.get_nodes_infos()
103+
node_infos, taints = self.__kubecli.get_nodes_infos()
76104
chaos_telemetry.node_summary_infos = node_infos
77-
chaos_telemetry.cluster_version = self.kubecli.get_version()
105+
chaos_telemetry.cluster_version = self.__kubecli.get_version()
78106
chaos_telemetry.node_taints = taints
79107
for info in node_infos:
80108
chaos_telemetry.total_node_count += info.count
@@ -217,7 +245,7 @@ def get_prometheus_pod_data(
217245
if not prometheus_backup:
218246
return file_list
219247

220-
prometheus_pod = self.kubecli.get_pod_info(
248+
prometheus_pod = self.__kubecli.get_pod_info(
221249
prometheus_pod_name, prometheus_namespace
222250
)
223251
if not prometheus_pod:
@@ -234,7 +262,7 @@ def get_prometheus_pod_data(
234262
target_path = "/prometheus/wal"
235263

236264
try:
237-
file_list = self.kubecli.archive_and_get_path_from_pod(
265+
file_list = self.__kubecli.archive_and_get_path_from_pod(
238266
prometheus_pod_name,
239267
prometheus_container_name,
240268
prometheus_namespace,
@@ -591,7 +619,7 @@ def put_cluster_events(
591619
if len(exceptions) > 0:
592620
raise Exception(", ".join(exceptions))
593621

594-
events_file = self.kubecli.collect_cluster_events(
622+
events_file = self.__kubecli.collect_cluster_events(
595623
start_timestamp,
596624
end_timestamp,
597625
str(get_localzone()),

src/krkn_lib/telemetry/ocp/krkn_telemetry_openshift.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,38 @@
44
import os
55
import threading
66
from queue import Queue
7-
87
from krkn_lib.models.telemetry import ChaosRunTelemetry
98
from krkn_lib.ocp import KrknOpenshift
109
from krkn_lib.telemetry.k8s import KrknTelemetryKubernetes
1110
from krkn_lib.utils import SafeLogger
1211

1312

1413
class KrknTelemetryOpenshift(KrknTelemetryKubernetes):
15-
ocpcli: KrknOpenshift
14+
__ocpcli: KrknOpenshift
15+
__telemetry_id: str = None
1616

1717
def __init__(
1818
self,
1919
safe_logger: SafeLogger,
2020
lib_openshift: KrknOpenshift,
21+
telemetry_request_id: str = "",
2122
krkn_telemetry_config: dict[str, any] = None,
2223
):
2324
super().__init__(
2425
safe_logger=safe_logger,
2526
lib_kubernetes=lib_openshift,
2627
krkn_telemetry_config=krkn_telemetry_config,
28+
telemetry_request_id=telemetry_request_id,
2729
)
28-
self.ocpcli = lib_openshift
30+
self.__ocpcli = lib_openshift
31+
32+
def get_lib_ocp(self) -> KrknOpenshift:
33+
"""
34+
Returns the instance of KrknOpenshift
35+
36+
:return: a KrknOpenshift instance
37+
"""
38+
return self.__ocpcli
2939

3040
def get_ocp_prometheus_data(
3141
self,
@@ -56,14 +66,14 @@ def get_ocp_prometheus_data(
5666
def collect_cluster_metadata(self, chaos_telemetry: ChaosRunTelemetry):
5767
super().collect_cluster_metadata(chaos_telemetry)
5868
chaos_telemetry.cloud_infrastructure = (
59-
self.ocpcli.get_cloud_infrastructure()
69+
self.__ocpcli.get_cloud_infrastructure()
6070
)
61-
chaos_telemetry.cloud_type = self.ocpcli.get_cluster_type()
71+
chaos_telemetry.cloud_type = self.__ocpcli.get_cluster_type()
6272
chaos_telemetry.cluster_version = (
63-
self.ocpcli.get_clusterversion_string()
73+
self.__ocpcli.get_clusterversion_string()
6474
)
6575
chaos_telemetry.network_plugins = (
66-
self.ocpcli.get_cluster_network_plugins()
76+
self.__ocpcli.get_cluster_network_plugins()
6777
)
6878
vm_number = self.get_vm_number()
6979
if vm_number > 0:
@@ -168,10 +178,10 @@ def put_ocp_logs(
168178
dst_dir = os.path.join(archive_path, f"filtered-logs-{timestamp}")
169179
os.mkdir(workdir)
170180
os.mkdir(dst_dir)
171-
archive_path = self.ocpcli.collect_filter_archive_ocp_logs(
181+
archive_path = self.__ocpcli.collect_filter_archive_ocp_logs(
172182
workdir,
173183
dst_dir,
174-
self.kubecli.get_kubeconfig_path(),
184+
self.__kubecli.get_kubeconfig_path(),
175185
start_timestamp,
176186
end_timestamp,
177187
logs_filter_patterns,

0 commit comments

Comments
 (0)