1111from SoftLayer import exceptions
1212from SoftLayer import utils
1313
14+ from pprint import pprint as pp
1415
1516class UserManager (utils .IdentifierMixin , object ):
1617 """Manages Users.
@@ -46,7 +47,8 @@ def list_users(self, objectmask=None, objectfilter=None):
4647 """
4748
4849 if objectmask is None :
49- objectmask = "mask[id, username, displayName, userStatus[name], hardwareCount, virtualGuestCount]"
50+ objectmask = """mask[id, username, displayName, userStatus[name], hardwareCount, virtualGuestCount,
51+ email, roles]"""
5052
5153 return self .account_service .getUsers (mask = objectmask , filter = objectfilter )
5254
@@ -79,7 +81,7 @@ def add_permissions(self, user_id, permissions):
7981 Example::
8082 add_permissions(123, ['BANDWIDTH_MANAGE'])
8183 """
82- pretty_permissions = format_permission_object (permissions )
84+ pretty_permissions = self . format_permission_object (permissions )
8385 return self .user_service .addBulkPortalPermission (pretty_permissions , id = user_id )
8486
8587 def remove_permissions (self , user_id , permissions ):
@@ -92,7 +94,7 @@ def remove_permissions(self, user_id, permissions):
9294 Example::
9395 remove_permissions(123, ['BANDWIDTH_MANAGE'])
9496 """
95- pretty_permissions = format_permission_object (permissions )
97+ pretty_permissions = self . format_permission_object (permissions )
9698 return self .user_service .removeBulkPortalPermission (pretty_permissions , id = user_id )
9799
98100 def get_user_permissions (self , user_id ):
@@ -165,9 +167,19 @@ def _get_id_from_username(self, username):
165167 raise exceptions .SoftLayerError ("Unable to find user id for %s" % username )
166168
167169
168- def format_permission_object (permissions ):
169- """Formats a list of permission key names into something the SLAPI will respect"""
170- pretty_permissions = []
171- for permission in permissions :
172- pretty_permissions .append ({'keyName' : permission })
173- return pretty_permissions
170+ def format_permission_object (self , permissions ):
171+ """Formats a list of permission key names into something the SLAPI will respect"""
172+ pretty_permissions = []
173+ available_permissions = self .get_all_permissions ()
174+ # pp(available_permissions)
175+ for permission in permissions :
176+ permission = permission .upper ()
177+ if permission == 'ALL' :
178+ return available_permissions
179+ # Search through available_permissions to make sure what the user entered was valid
180+ if next (filter (lambda x : x ['keyName' ] == permission , available_permissions ), False ):
181+ pretty_permissions .append ({'keyName' : permission })
182+ else :
183+ raise exceptions .SoftLayerError ("%s is not a valid permission" % permission )
184+ pp (pretty_permissions )
185+ return pretty_permissions
0 commit comments