Coverage for ocp_resources/event.py: 80%
15 statements
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-30 10:51 +0200
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-30 10:51 +0200
1from simple_logger.logger import get_logger
3LOGGER = get_logger(name=__name__)
6class Event:
7 """
8 Allow read and remove K8s events.
9 """
11 api_version = "v1"
13 @classmethod
14 def get(
15 cls,
16 dyn_client,
17 namespace=None,
18 name=None,
19 label_selector=None,
20 field_selector=None,
21 resource_version=None,
22 timeout=None,
23 ):
24 """
25 get - retrieves K8s events.
27 Args:
28 dyn_client (DynamicClient): K8s client
29 namespace (str): event namespace
30 name (str): event name
31 label_selector (str): filter events by labels; comma separated string of key=value
32 field_selector (str): filter events by fields; comma separated string of key=valueevent fields;
33 comma separated string of key=value
34 resource_version (str): filter events by their resource's version
35 timeout (int): timeout in seconds
37 Returns
38 list: event objects
40 example: reading all CSV Warning events in namespace "my-namespace", with reason of "AnEventReason"
41 for event in Event.get(
42 default_client,
43 namespace="my-namespace",
44 field_selector="involvedObject.kind==ClusterServiceVersion,type==Warning,reason=AnEventReason",
45 timeout=10,
46 ):
47 print(event.object)
48 """
50 LOGGER.info("Reading events")
51 LOGGER.debug(
52 f"get events parameters: namespace={namespace}, name={name},"
53 f" label_selector={label_selector}, field_selector='{field_selector}',"
54 f" resource_version={resource_version}, timeout={timeout}"
55 )
57 event_listener = dyn_client.resources.get(api_version=cls.api_version, kind=cls.__name__)
58 yield from event_listener.watch(
59 namespace=namespace,
60 name=name,
61 label_selector=label_selector,
62 field_selector=field_selector,
63 resource_version=resource_version,
64 timeout=timeout,
65 )
67 @classmethod
68 def delete_events(
69 cls,
70 dyn_client,
71 namespace=None,
72 name=None,
73 label_selector=None,
74 field_selector=None,
75 resource_version=None,
76 timeout=None,
77 ):
78 """
79 delete_events - delete K8s events. For example, to cleanup events before test, in order to not get old
80 events in the test, in order to prevent false positive test.
82 Args:
83 dyn_client (DynamicClient): K8s client
84 namespace (str): event namespace
85 name (str): event name
86 label_selector (str): filter events by labels; comma separated string of key=value
87 field_selector (str): filter events by fields; comma separated string of key=valueevent fields;
88 comma separated string of key=value
89 resource_version (str): filter events by their resource's version
90 timeout (int): timeout in seconds
92 Returns
93 list: event objects
95 example: deleting all the event with a reason of "AnEventReason", from "my-namespace" namespace
97 def delete_events_before_test(default_client):
98 Event.delete_events(default_client, namespace=my-namespace, field_selector="reason=AnEventReason")
99 """
100 LOGGER.info("Deleting events")
101 LOGGER.debug(
102 f"delete_events parameters: namespace={namespace}, name={name},"
103 f" label_selector={label_selector}, field_selector='{field_selector}',"
104 f" resource_version={resource_version}, timeout={timeout}"
105 )
106 dyn_client.resources.get(api_version=cls.api_version, kind=cls.__name__).delete(
107 namespace=namespace,
108 name=name,
109 label_selector=label_selector,
110 field_selector=field_selector,
111 resource_version=resource_version,
112 timeout=timeout,
113 )