@@ -600,26 +600,18 @@ def get_users(self):
600600 return [False , self .lasterr ]
601601 return [True , res .json ()['users' ]]
602602
603- def edit_user (self , user_email , firstName = None , lastName = None , roles = None , teams = None ):
603+ def edit_user (self , user_email , firstName = None , lastName = None , systemRole = None ):
604604 res = self .get_user (user_email )
605605 if res [0 ] == False :
606606 return res
607607 user = res [1 ]
608608 reqbody = {
609609 'agentInstallParams' : user ['agentInstallParams' ],
610- 'roles ' : roles if roles else user ['roles ' ],
610+ 'systemRole ' : systemRole if systemRole else user ['systemRole ' ],
611611 'username' : user_email ,
612612 'version' : user ['version' ]
613613 }
614614
615- if teams == None :
616- reqbody ['teams' ] = user ['teams' ]
617- else :
618- t = self .get_team_ids (teams )
619- if t [0 ] == False :
620- return [False , 'Could not get team IDs' ]
621- reqbody ['teams' ] = t [1 ]
622-
623615 if firstName == None :
624616 reqbody ['firstName' ] = user ['firstName' ] if 'firstName' in user .keys () else ''
625617 else :
@@ -679,21 +671,29 @@ def get_team_ids(self, teams):
679671 u = filter (lambda x : x ['name' ] in teams , res .json ()['teams' ])
680672 return [True , map (lambda x : x ['id' ], u )]
681673
682- def get_user_ids (self , users ):
674+ def _get_user_id_dict (self , users ):
683675 res = requests .get (self .url + '/api/users' , headers = self .hdrs , verify = self .ssl_verify )
684676 if not self ._checkResponse (res ):
685677 return [False , self .lasterr ]
686678 u = filter (lambda x : x ['username' ] in users , res .json ()['users' ])
687- return [True , map (lambda x : x ['id' ], u )]
679+ return [True , dict ((user ['username' ], user ['id' ]) for user in u )]
680+
681+ def get_user_ids (self , users ):
682+ res = self ._get_user_id_dict (users )
683+ if res [0 ] == False :
684+ return res
685+ else :
686+ return [True , res [1 ].values ()]
688687
689- def create_team (self , name , users = [] , filter = '' , description = '' , show = 'host' , theme = '#7BB0B2' ,
688+ def create_team (self , name , memberships = None , filter = '' , description = '' , show = 'host' , theme = '#7BB0B2' ,
690689 perm_capture = False , perm_custom_events = False , perm_aws_data = False ):
691- '''**Description**
690+ '''
691+ **Description**
692692 Creates a new team
693693
694694 **Arguments**
695695 - **name**: the name of the team to create.
696- - **users **: list of user names to add to the team.
696+ - **memberships **: dictionary of ( user-name, team-role) pairs that should describe new memberships of the team.
697697 - **filter**: the scope that this team is able to access within Sysdig Monitor.
698698 - **description**: describes the team that will be created.
699699 - **show**: possible values are *host*, *container*.
@@ -719,11 +719,17 @@ def create_team(self, name, users=[], filter='', description='', show='host', th
719719 }
720720
721721 # Map user-names to IDs
722- if users != None and len (users ) != 0 :
723- res = self .get_user_ids ( users )
722+ if memberships != None and len (memberships ) != 0 :
723+ res = self ._get_user_id_dict ( memberships . keys () )
724724 if res [0 ] == False :
725- return [False , 'Could not convert user names to IDs' ]
726- reqbody ['users' ] = res [1 ]
725+ return [False , 'Could not fetch IDs for user names' ]
726+ reqbody ['userRoles' ] = [
727+ {
728+ 'userId' : user_id ,
729+ 'role' : memberships [user_name ]
730+ }
731+ for (user_name , user_id ) in res [1 ].iteritems ()
732+ ]
727733 else :
728734 reqbody ['users' ] = []
729735
@@ -735,14 +741,15 @@ def create_team(self, name, users=[], filter='', description='', show='host', th
735741 return [False , self .lasterr ]
736742 return [True , res .json ()]
737743
738- def edit_team (self , name , users = None , filter = None , description = None , show = None , theme = None ,
744+ def edit_team (self , name , memberships = None , filter = None , description = None , show = None , theme = None ,
739745 perm_capture = None , perm_custom_events = None , perm_aws_data = None ):
740- '''**Description**
746+ '''
747+ **Description**
741748 Edits an existing team. All arguments are optional. Team settings for any arguments unspecified will remain at their current settings.
742749
743750 **Arguments**
744751 - **name**: the name of the team to edit.
745- - **users **: list of user names that should now be members of the team.
752+ - **memberships **: dictionary of ( user-name, team-role) pairs that should describe new memberships of the team.
746753 - **filter**: the scope that this team is able to access within Sysdig Monitor.
747754 - **description**: describes the team that will be created.
748755 - **show**: possible values are *host*, *container*.
@@ -774,16 +781,22 @@ def edit_team(self, name, users=None, filter=None, description=None, show=None,
774781 'version' : t ['version' ]
775782 }
776783
777- # Handling for users to map user-names to IDs
778- if users != None :
779- res = self .get_user_ids ( users )
784+ # Handling for users to map ( user-name, team-role) pairs to memberships
785+ if memberships != None :
786+ res = self ._get_user_id_dict ( memberships . keys () )
780787 if res [0 ] == False :
781788 return [False , 'Could not convert user names to IDs' ]
782- reqbody ['users' ] = res [1 ]
783- elif 'users' in t .keys ():
784- reqbody ['users' ] = t ['users' ]
789+ reqbody ['userRoles' ] = [
790+ {
791+ 'userId' : user_id ,
792+ 'role' : memberships [user_name ]
793+ }
794+ for (user_name , user_id ) in res [1 ].iteritems ()
795+ ]
796+ elif 'userRoles' in t .keys ():
797+ reqbody ['userRoles' ] = t ['userRoles' ]
785798 else :
786- reqbody ['users ' ] = []
799+ reqbody ['userRoles ' ] = []
787800
788801 # Special handling for filters since we don't support blank filters
789802 if filter != None :
0 commit comments