1
1
import json
2
+ from datetime import datetime
2
3
3
4
from sdcclient ._common import _SdcCommon
4
5
@@ -8,7 +9,8 @@ def __init__(self, token="", sdc_url='https://app.sysdigcloud.com', ssl_verify=T
8
9
super ().__init__ (token , sdc_url , ssl_verify , custom_headers )
9
10
self .product = "SDC"
10
11
11
- def get_events (self , name = None , category = None , direction = 'before' , status = None , limit = 100 , pivot = None ):
12
+ def get_events (self , name = None , category = None , direction = 'before' , status = None , limit = 100 , pivot = None , from_s = None ,
13
+ to_s = None ):
12
14
'''**Description**
13
15
Returns the list of Sysdig Monitor events.
14
16
@@ -19,6 +21,8 @@ def get_events(self, name=None, category=None, direction='before', status=None,
19
21
- **status**: status of the event as list. Default: ['triggered', 'resolved', 'acknowledged', 'unacknowledged']
20
22
- **limit**: max number of events to retrieve. Default: 100.
21
23
- **pivot**: event id to use as pivot. Default: None.
24
+ - **from_s**: the unix timestamp in milliseconds or datetime object for the beginning of the events. Default: None.
25
+ - **to_s**: the unix timestamp in milliseconds or datetime object for the end of the events. Default: None.
22
26
23
27
**Success Return Value**
24
28
A dictionary containing the list of events.
@@ -46,6 +50,18 @@ def get_events(self, name=None, category=None, direction='before', status=None,
46
50
if direction not in ["before" , "after" ]:
47
51
return False , "Invalid direction '{}', must be either 'before' or 'after'" .format (direction )
48
52
53
+ if from_s is not None and isinstance (from_s , datetime ):
54
+ from_s = int (from_s .timestamp () * 1000 )
55
+ if to_s is not None and isinstance (to_s , datetime ):
56
+ to_s = int (to_s .timestamp () * 1000 )
57
+
58
+ if to_s is None and from_s is not None or from_s is None and to_s is not None :
59
+ return False , "only one of 'from_s' or 'to_s' has been specified, both are required when filtering by time"
60
+
61
+ if to_s is not None and from_s is not None :
62
+ if int (to_s ) < int (from_s ):
63
+ return False , "'from_s' must be lower than 'to_s'"
64
+
49
65
options = {
50
66
'alertStatus' : status ,
51
67
'category' : ',' .join (category ),
@@ -56,6 +72,8 @@ def get_events(self, name=None, category=None, direction='before', status=None,
56
72
'limit' : str (limit ),
57
73
'pivot' : pivot ,
58
74
'filter' : name ,
75
+ 'from' : from_s ,
76
+ 'to' : to_s ,
59
77
}
60
78
params = {k : v for k , v in options .items () if v is not None }
61
79
res = self .http .get (self .url + '/api/v2/events/' , headers = self .hdrs , params = params , verify = self .ssl_verify )
@@ -78,7 +96,7 @@ def delete_event(self, event):
78
96
return [False , "Invalid event format" ]
79
97
80
98
res = self .http .delete (self .url + '/api/v2/events/' + str (event ['id' ]), headers = self .hdrs ,
81
- verify = self .ssl_verify )
99
+ verify = self .ssl_verify )
82
100
if not self ._checkResponse (res ):
83
101
return [False , self .lasterr ]
84
102
return [True , None ]
@@ -112,5 +130,5 @@ def post_event(self, name, description=None, severity=None, event_filter=None, t
112
130
'event' : {k : v for k , v in options .items () if v is not None }
113
131
}
114
132
res = self .http .post (self .url + '/api/v2/events/' , headers = self .hdrs , data = json .dumps (edata ),
115
- verify = self .ssl_verify )
133
+ verify = self .ssl_verify )
116
134
return self ._request_result (res )
0 commit comments