Skip to content

Commit ed803f6

Browse files
Merge pull request #1717 from caberos/issue1714
add user remove-access command
2 parents 546b69a + e4e1ea4 commit ed803f6

File tree

7 files changed

+108
-0
lines changed

7 files changed

+108
-0
lines changed

SoftLayer/CLI/routes.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@
366366
('user:device-access', 'SoftLayer.CLI.user.device_access:cli'),
367367
('user:vpn-manual', 'SoftLayer.CLI.user.vpn_manual:cli'),
368368
('user:vpn-subnet', 'SoftLayer.CLI.user.vpn_subnet:cli'),
369+
('user:remove-access', 'SoftLayer.CLI.user.remove_access:cli'),
369370

370371
('vlan', 'SoftLayer.CLI.vlan'),
371372
('vlan:create', 'SoftLayer.CLI.vlan.create:cli'),
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
"""User remove access to devices."""
2+
# :license: MIT, see LICENSE for more details.
3+
4+
import click
5+
6+
import SoftLayer
7+
from SoftLayer.CLI import environment
8+
9+
10+
@click.command(cls=SoftLayer.CLI.command.SLCommand, )
11+
@click.argument('identifier')
12+
@click.option('--hardware', '-h',
13+
help="Display hardware this user has access to.")
14+
@click.option('--virtual', '-v',
15+
help="Display virtual guests this user has access to.")
16+
@click.option('--dedicated', '-l',
17+
help="dedicated host ID ")
18+
@environment.pass_env
19+
def cli(env, identifier, hardware, virtual, dedicated):
20+
"""Remove access from a user to an specific device.
21+
22+
Example: slcli user remove-access 123456 --hardware 123456789
23+
"""
24+
25+
mgr = SoftLayer.UserManager(env.client)
26+
device = ''
27+
result = False
28+
if hardware:
29+
device = hardware
30+
result = mgr.remove_hardware_access(identifier, hardware)
31+
32+
if virtual:
33+
device = virtual
34+
result = mgr.remove_virtual_access(identifier, virtual)
35+
36+
if dedicated:
37+
device = dedicated
38+
result = mgr.remove_dedicated_access(identifier, dedicated)
39+
40+
if result:
41+
click.secho("Remove to access to device: %s" % device, fg='green')
42+
else:
43+
raise SoftLayer.exceptions.SoftLayerError('You need argument a hardware, virtual or dedicated identifier.\n'
44+
'E.g slcli user 123456 --hardware 91803794\n'
45+
' slcli user 123456 --dedicated 91803793\n'
46+
' slcli user 123456 --virtual 91803792')

SoftLayer/fixtures/SoftLayer_User_Customer.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@
8686
editObject = True
8787
addApiAuthenticationKey = True
8888
updateVpnUser = True
89+
removeDedicatedHostAccess = True
90+
removeHardwareAccess = True
91+
removeVirtualGuestAccess = True
8992

9093
getHardware = [{
9194
"domain": "testedit.com",

SoftLayer/managers/user.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,36 @@ def get_overrides_list(self, user_id, subnet_ids):
392392

393393
return overrides_list
394394

395+
def remove_hardware_access(self, user_id, hardware_id):
396+
"""Remove hardware from a portal user’s hardware access list.
397+
398+
:param int user_id:
399+
:param int hardware_id
400+
401+
:returns: true
402+
"""
403+
return self.user_service.removeHardwareAccess(hardware_id, id=user_id)
404+
405+
def remove_virtual_access(self, user_id, virtual_id):
406+
"""Remove hardware from a portal user’s virtual guests access list.
407+
408+
:param int user_id:
409+
:param int hardware_id
410+
411+
:returns: true
412+
"""
413+
return self.user_service.removeVirtualGuestAccess(virtual_id, id=user_id)
414+
415+
def remove_dedicated_access(self, user_id, dedicated_id):
416+
"""Remove hardware from a portal user’s dedicated host access list.
417+
418+
:param int user_id:
419+
:param int dedicated_id
420+
421+
:returns: true
422+
"""
423+
return self.user_service.removeDedicatedHostAccess(dedicated_id, id=user_id)
424+
395425
def get_user_hardware(self, user_id):
396426
"""User Hardware list.
397427

docs/cli/users.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,8 @@ Version 5.6.0 introduces the ability to interact with user accounts from the cli
5252
:prog: user vpn-subnet
5353
:show-nested:
5454

55+
.. click:: SoftLayer.CLI.user.remove_access:cli
56+
:prog: user remove-access
57+
:show-nested:
58+
5559

tests/CLI/modules/user_tests.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,3 +344,15 @@ def test_devices_access(self):
344344
self.assert_called_with('SoftLayer_User_Customer', 'getHardware')
345345
self.assert_called_with('SoftLayer_User_Customer', 'getDedicatedHosts')
346346
self.assert_called_with('SoftLayer_User_Customer', 'getVirtualGuests')
347+
348+
def test_remove_access_hardware(self):
349+
result = self.run_command(['user', 'remove-access', '123456', '--hardware', '147258'])
350+
self.assert_no_fail(result)
351+
352+
def test_remove_access_virtual(self):
353+
result = self.run_command(['user', 'remove-access', '123456', '--virtual', '987456'])
354+
self.assert_no_fail(result)
355+
356+
def test_remove_access_dedicated(self):
357+
result = self.run_command(['user', 'remove-access', '123456', '--dedicated', '369852'])
358+
self.assert_no_fail(result)

tests/managers/user_tests.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,3 +306,15 @@ def test_get_dedicated_host(self):
306306
def test_get_virtual(self):
307307
self.manager.get_user_virtuals(1234)
308308
self.assert_called_with('SoftLayer_User_Customer', 'getVirtualGuests')
309+
310+
def test_remove_hardware(self):
311+
self.manager.remove_hardware_access(123456, 369852)
312+
self.assert_called_with('SoftLayer_User_Customer', 'removeHardwareAccess')
313+
314+
def test_remove_virtual(self):
315+
self.manager.remove_virtual_access(123456, 369852)
316+
self.assert_called_with('SoftLayer_User_Customer', 'removeVirtualGuestAccess')
317+
318+
def test_remove_dedicated(self):
319+
self.manager.remove_dedicated_access(123456, 369852)
320+
self.assert_called_with('SoftLayer_User_Customer', 'removeDedicatedHostAccess')

0 commit comments

Comments
 (0)