Skip to content

Commit eaf0c32

Browse files
more user improvements
1 parent 5f87aa4 commit eaf0c32

File tree

3 files changed

+35
-19
lines changed

3 files changed

+35
-19
lines changed

SoftLayer/CLI/user/edit_permissions.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,20 @@
1111
@click.command()
1212
@click.argument('identifier')
1313
@click.option('--enable/--disable', default=True,
14-
help="Enable or Disable selected permissions")
15-
@click.option('--permission', '-p', multiple=True,
16-
help="Permission keyName to set, multiple instances allowed.")
14+
help="Enable (DEFAULT) or Disable selected permissions")
15+
@click.option('--permission', '-p', multiple=True, required=True,
16+
help="Permission keyName to set, multiple instances allowed. Use keyword ALL to select ALL permisssions")
17+
@click.option('--from-user', '-u', default=None,
18+
help="Set permissions to match this user's permissions")
1719
@environment.pass_env
18-
def cli(env, identifier, enable, permission):
20+
def cli(env, identifier, enable, permission, from_user):
1921
"""Enable or Disable specific permissions."""
20-
2122
mgr = SoftLayer.UserManager(env.client)
2223
user_id = helpers.resolve_id(mgr.resolve_ids, identifier, 'username')
2324
result = False
25+
# TODO, this bit. Make sure from-user and permission/enable are exclusive
26+
if from_user:
27+
result = mgr.permissions_from_user(user_id, from_user)
2428
if enable:
2529
result = mgr.add_permissions(user_id, permission)
2630
else:

SoftLayer/CLI/user/list.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,23 @@
88
from SoftLayer.CLI import environment
99
from SoftLayer.CLI import formatting
1010

11+
from pprint import pprint as pp
1112

1213
COLUMNS = [
1314
column_helper.Column('id', ('id',)),
1415
column_helper.Column('username', ('username',)),
16+
column_helper.Column('email', ('email',)),
1517
column_helper.Column('displayName', ('displayName',)),
1618
column_helper.Column('status', ('userStatus', 'name')),
1719
column_helper.Column('hardwareCount', ('hardwareCount',)),
18-
column_helper.Column('virtualGuestCount', ('virtualGuestCount',)),
20+
column_helper.Column('virtualGuestCount', ('virtualGuestCount',))
1921
]
2022

2123
DEFAULT_COLUMNS = [
2224
'id',
2325
'username',
24-
'displayName',
25-
'status',
26-
'hardwareCount',
27-
'virtualGuestCount'
26+
'email',
27+
'displayName'
2828
]
2929

3030

SoftLayer/managers/user.py

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from SoftLayer import exceptions
1212
from SoftLayer import utils
1313

14+
from pprint import pprint as pp
1415

1516
class 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

Comments
 (0)