1313from alertaclient .models .alert import Alert
1414from alertaclient .models .blackout import Blackout
1515from alertaclient .models .customer import Customer
16+ from alertaclient .models .enums import Scope
17+ from alertaclient .models .group import Group
1618from alertaclient .models .heartbeat import Heartbeat
1719from alertaclient .models .history import RichHistory
1820from alertaclient .models .key import ApiKey
@@ -92,6 +94,12 @@ def update_attributes(self, id, attributes):
9294 }
9395 return self .http .put ('/alert/%s/attributes' % id , data )
9496
97+ def add_note (self , id , note ):
98+ data = {
99+ 'note' : note
100+ }
101+ return self .http .put ('/alert/%s/note' % id , data )
102+
95103 def delete_alert (self , id ):
96104 return self .http .delete ('/alert/%s' % id )
97105
@@ -118,13 +126,25 @@ def get_top10_flapping(self, query=None):
118126 counts = self .http .get ('/alerts/top10/flapping' , query )
119127 return counts ['top10' ]
120128
129+ def get_top10_standing (self , query = None ):
130+ counts = self .http .get ('/alerts/top10/standing' , query )
131+ return counts ['top10' ]
132+
121133 def get_environments (self , query = None ):
122- counts = self .http .get ('/environments' , query )
123- return counts ['environments' ]
134+ r = self .http .get ('/environments' , query )
135+ return r ['environments' ]
124136
125137 def get_services (self , query = None ):
126- counts = self .http .get ('/services' , query )
127- return counts ['services' ]
138+ r = self .http .get ('/services' , query )
139+ return r ['services' ]
140+
141+ def get_groups (self , query = None ):
142+ r = self .http .get ('/alerts/groups' , query )
143+ return r ['groups' ]
144+
145+ def get_tags (self , query = None ):
146+ r = self .http .get ('/alerts/tags' , query )
147+ return r ['tags' ]
128148
129149 # Blackouts
130150 def create_blackout (self , environment , service = None , resource = None , event = None , group = None , tags = None , customer = None , start = None , duration = None , text = None ):
@@ -143,10 +163,16 @@ def create_blackout(self, environment, service=None, resource=None, event=None,
143163 r = self .http .post ('/blackout' , data )
144164 return Blackout .parse (r ['blackout' ])
145165
166+ def get_blackout (self , id ):
167+ return Blackout .parse (self .http .get ('/blackout/%s' % id )['blackout' ])
168+
146169 def get_blackouts (self , query = None ):
147170 r = self .http .get ('/blackouts' , query )
148171 return [Blackout .parse (b ) for b in r ['blackouts' ]]
149172
173+ def update_blackout (self , id , blackout ):
174+ self .http .put ('/blackout/%s' % id , blackout )
175+
150176 def delete_blackout (self , id ):
151177 return self .http .delete ('/blackout/%s' % id )
152178
@@ -159,10 +185,16 @@ def create_customer(self, customer, match):
159185 r = self .http .post ('/customer' , data )
160186 return Customer .parse (r ['customer' ])
161187
188+ def get_customer (self ):
189+ return Customer .parse (self .http .get ('/customer/%s' % id )['customer' ])
190+
162191 def get_customers (self , query = None ):
163192 r = self .http .get ('/customers' , query )
164193 return [Customer .parse (c ) for c in r ['customers' ]]
165194
195+ def update_customer (self , id , customer ):
196+ self .http .put ('/customer/%s' % id , customer )
197+
166198 def delete_customer (self , id ):
167199 return self .http .delete ('/customer/%s' % id )
168200
@@ -201,10 +233,22 @@ def create_key(self, username, scopes=None, expires=None, text='', customer=None
201233 r = self .http .post ('/key' , data )
202234 return ApiKey .parse (r ['data' ])
203235
236+ def get_key (self ):
237+ return ApiKey .parse (self .http .get ('/key/%s' % id )['key' ])
238+
204239 def get_keys (self , query = None ):
205240 r = self .http .get ('/keys' , query )
206241 return [ApiKey .parse (k ) for k in r ['keys' ]]
207242
243+ def update_key (self , id , ** kwargs ):
244+ data = {
245+ 'scopes' : kwargs .get ('scopes' ),
246+ 'text' : kwargs .get ('text' ),
247+ 'expireTime' : kwargs .get ('expireTime' ),
248+ 'customer' : kwargs .get ('customer' )
249+ }
250+ return self .http .put ('/key/{}' .format (id ), data )
251+
208252 def delete_key (self , id ):
209253 return self .http .delete ('/key/%s' % id )
210254
@@ -217,13 +261,27 @@ def create_perm(self, role, scopes=None):
217261 r = self .http .post ('/perm' , data )
218262 return Permission .parse (r ['permission' ])
219263
264+ def get_perm (self ):
265+ return Permission .parse (self .http .get ('/perm/%s' % id )['perm' ])
266+
220267 def get_perms (self , query = None ):
221268 r = self .http .get ('/perms' , query )
222269 return [Permission .parse (p ) for p in r ['permissions' ]]
223270
271+ def update_perm (self , id , ** kwargs ):
272+ data = {
273+ 'match' : kwargs .get ('match' ), # role
274+ 'scopes' : kwargs .get ('scopes' )
275+ }
276+ return self .http .put ('/perm/{}' .format (id ), data )
277+
224278 def delete_perm (self , id ):
225279 return self .http .delete ('/perm/%s' % id )
226280
281+ def get_scopes (self ):
282+ r = self .http .get ('/scopes' )
283+ return [Scope (s ) for s in r ['scopes' ]]
284+
227285 # Users
228286 def signup (self , name , email , password , status , attributes = None , text = '' ):
229287 data = {
@@ -250,6 +308,19 @@ def create_user(self, name, email, password, status, roles=None, attributes=None
250308 r = self .http .post ('/user' , data )
251309 return User .parse (r ['user' ])
252310
311+ def get_user (self ):
312+ return Permission .parse (self .http .get ('/user/%s' % id )['user' ])
313+
314+ def get_user_groups (self , id ):
315+ r = self .http .get ('/user/{}/groups' .format (id ))
316+ return [Group .parse (g ) for g in r ['groups' ]]
317+
318+ def get_me (self ):
319+ return User .parse (self .http .get ('/user/me' )['user' ])
320+
321+ def get_me_attributes (self ):
322+ return self .http .get ('/user/me/attributes' )['attributes' ]
323+
253324 def get_users (self , query = None ):
254325 r = self .http .get ('/users' , query )
255326 return [User .parse (u ) for u in r ['users' ]]
@@ -293,6 +364,7 @@ def update_me_attributes(self, attributes):
293364 def delete_user (self , id ):
294365 return self .http .delete ('/user/%s' % id )
295366
367+ # Auth
296368 def login (self , username , password ):
297369 data = {
298370 'username' : username ,
@@ -318,6 +390,42 @@ def userinfo(self):
318390 def config (self ):
319391 return self .http .get ('/config' )
320392
393+ # Groups
394+ def create_group (self , name , text ):
395+ data = {
396+ 'name' : name ,
397+ 'text' : text
398+ }
399+ r = self .http .post ('/group' , data )
400+ return Group .parse (r ['group' ])
401+
402+ def get_group (self ):
403+ return Group .parse (self .http .get ('/group/%s' % id )['group' ])
404+
405+ def get_group_users (self , id ):
406+ r = self .http .get ('/group/{}/users' .format (id ))
407+ return [User .parse (u ) for u in r ['users' ]]
408+
409+ def get_users_groups (self , query = None ):
410+ r = self .http .get ('/groups' , query )
411+ return [Group .parse (g ) for g in r ['groups' ]]
412+
413+ def update_group (self , id , kwargs ):
414+ data = {
415+ 'name' : kwargs .get ('name' ),
416+ 'text' : kwargs .get ('text' )
417+ }
418+ return self .http .put ('/group/{}' .format (id ), data )
419+
420+ def add_user_to_group (self , group_id , user_id ):
421+ return self .http .put ('/group/{}/user/{}' .format (group_id , user_id ))
422+
423+ def remove_user_from_group (self , group_id , user_id ):
424+ return self .http .delete ('/group/{}/user/{}' .format (group_id , user_id ))
425+
426+ def delete_group (self , id ):
427+ return self .http .delete ('/group/%s' % id )
428+
321429 # Management
322430 def mgmt_status (self ):
323431 return self .http .get ('/management/status' )
0 commit comments