@@ -600,26 +600,18 @@ def get_users(self):
600
600
return [False , self .lasterr ]
601
601
return [True , res .json ()['users' ]]
602
602
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 ):
604
604
res = self .get_user (user_email )
605
605
if res [0 ] == False :
606
606
return res
607
607
user = res [1 ]
608
608
reqbody = {
609
609
'agentInstallParams' : user ['agentInstallParams' ],
610
- 'roles ' : roles if roles else user ['roles ' ],
610
+ 'systemRole ' : systemRole if systemRole else user ['systemRole ' ],
611
611
'username' : user_email ,
612
612
'version' : user ['version' ]
613
613
}
614
614
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
-
623
615
if firstName == None :
624
616
reqbody ['firstName' ] = user ['firstName' ] if 'firstName' in user .keys () else ''
625
617
else :
@@ -679,21 +671,29 @@ def get_team_ids(self, teams):
679
671
u = filter (lambda x : x ['name' ] in teams , res .json ()['teams' ])
680
672
return [True , map (lambda x : x ['id' ], u )]
681
673
682
- def get_user_ids (self , users ):
674
+ def _get_user_id_dict (self , users ):
683
675
res = requests .get (self .url + '/api/users' , headers = self .hdrs , verify = self .ssl_verify )
684
676
if not self ._checkResponse (res ):
685
677
return [False , self .lasterr ]
686
678
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 ()]
688
687
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' ,
690
689
perm_capture = False , perm_custom_events = False , perm_aws_data = False ):
691
- '''**Description**
690
+ '''
691
+ **Description**
692
692
Creates a new team
693
693
694
694
**Arguments**
695
695
- **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.
697
697
- **filter**: the scope that this team is able to access within Sysdig Monitor.
698
698
- **description**: describes the team that will be created.
699
699
- **show**: possible values are *host*, *container*.
@@ -719,11 +719,17 @@ def create_team(self, name, users=[], filter='', description='', show='host', th
719
719
}
720
720
721
721
# 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 () )
724
724
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
+ ]
727
733
else :
728
734
reqbody ['users' ] = []
729
735
@@ -735,14 +741,15 @@ def create_team(self, name, users=[], filter='', description='', show='host', th
735
741
return [False , self .lasterr ]
736
742
return [True , res .json ()]
737
743
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 ,
739
745
perm_capture = None , perm_custom_events = None , perm_aws_data = None ):
740
- '''**Description**
746
+ '''
747
+ **Description**
741
748
Edits an existing team. All arguments are optional. Team settings for any arguments unspecified will remain at their current settings.
742
749
743
750
**Arguments**
744
751
- **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.
746
753
- **filter**: the scope that this team is able to access within Sysdig Monitor.
747
754
- **description**: describes the team that will be created.
748
755
- **show**: possible values are *host*, *container*.
@@ -774,16 +781,22 @@ def edit_team(self, name, users=None, filter=None, description=None, show=None,
774
781
'version' : t ['version' ]
775
782
}
776
783
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 () )
780
787
if res [0 ] == False :
781
788
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' ]
785
798
else :
786
- reqbody ['users ' ] = []
799
+ reqbody ['userRoles ' ] = []
787
800
788
801
# Special handling for filters since we don't support blank filters
789
802
if filter != None :
0 commit comments