11import  json 
2+ from  datetime  import  datetime 
23
34from  sdcclient ._common  import  _SdcCommon 
45
@@ -8,7 +9,8 @@ def __init__(self, token="", sdc_url='https://app.sysdigcloud.com', ssl_verify=T
89        super ().__init__ (token , sdc_url , ssl_verify , custom_headers )
910        self .product  =  "SDC" 
1011
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 ):
1214        '''**Description** 
1315            Returns the list of Sysdig Monitor events. 
1416
@@ -19,6 +21,8 @@ def get_events(self, name=None, category=None, direction='before', status=None,
1921            - **status**: status of the event as list. Default: ['triggered', 'resolved', 'acknowledged', 'unacknowledged'] 
2022            - **limit**: max number of events to retrieve. Default: 100. 
2123            - **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. 
2226
2327        **Success Return Value** 
2428            A dictionary containing the list of events. 
@@ -46,6 +50,18 @@ def get_events(self, name=None, category=None, direction='before', status=None,
4650        if  direction  not  in "before" , "after" ]:
4751            return  False , "Invalid direction '{}', must be either 'before' or 'after'" .format (direction )
4852
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+ 
4965        options  =  {
5066            'alertStatus' : status ,
5167            'category' : ',' .join (category ),
@@ -56,6 +72,8 @@ def get_events(self, name=None, category=None, direction='before', status=None,
5672            'limit' : str (limit ),
5773            'pivot' : pivot ,
5874            'filter' : name ,
75+             'from' : from_s ,
76+             'to' : to_s ,
5977        }
6078        params  =  {k : v  for  k , v  in  options .items () if  v  is  not None }
6179        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):
7896            return  [False , "Invalid event format" ]
7997
8098        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 )
82100        if  not  self ._checkResponse (res ):
83101            return  [False , self .lasterr ]
84102        return  [True , None ]
@@ -112,5 +130,5 @@ def post_event(self, name, description=None, severity=None, event_filter=None, t
112130            'event' : {k : v  for  k , v  in  options .items () if  v  is  not None }
113131        }
114132        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 )
116134        return  self ._request_result (res )
0 commit comments