Skip to content

Commit cee55f4

Browse files
Merge pull request #2073 from ramkishor-ch/issue_2069
Added new slcli user vpn-disable and slcli user vpn-enable command
2 parents fe65dc3 + 1699d22 commit cee55f4

5 files changed

Lines changed: 95 additions & 2 deletions

File tree

SoftLayer/CLI/routes.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,8 @@
403403
('user:device-access', 'SoftLayer.CLI.user.device_access:cli'),
404404
('user:vpn-manual', 'SoftLayer.CLI.user.vpn_manual:cli'),
405405
('user:vpn-subnet', 'SoftLayer.CLI.user.vpn_subnet:cli'),
406+
('user:vpn-enable', 'SoftLayer.CLI.user.vpn_enable_or_disable:vpn_enable'),
407+
('user:vpn-disable', 'SoftLayer.CLI.user.vpn_enable_or_disable:vpn_disable'),
406408
('user:remove-access', 'SoftLayer.CLI.user.remove_access:cli'),
407409
('user:grant-access', 'SoftLayer.CLI.user.grant_access:cli'),
408410
('user:vpn-password', 'SoftLayer.CLI.user.vpn_password:cli'),
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
"""Enable or Disable vpn for a user."""
2+
# :license: MIT, see LICENSE for more details.
3+
4+
5+
import click
6+
7+
import SoftLayer
8+
from SoftLayer.CLI import environment
9+
from SoftLayer.CLI import helpers
10+
11+
12+
@click.command(cls=SoftLayer.CLI.command.SLCommand, )
13+
@click.argument('user')
14+
@environment.pass_env
15+
def vpn_enable(env, user):
16+
"""Enable vpn for a user.
17+
18+
Example::
19+
slcli user vpn-enable 1234567
20+
"""
21+
22+
mgr = SoftLayer.UserManager(env.client)
23+
user_id = helpers.resolve_id(mgr.resolve_ids, user, 'username')
24+
25+
result = mgr.vpn_enable_or_disable(user_id, True)
26+
message = f"{user} vpn is successfully enabled"
27+
28+
if result:
29+
click.secho(message, fg='green')
30+
31+
32+
@click.command(cls=SoftLayer.CLI.command.SLCommand, )
33+
@click.argument('user')
34+
@environment.pass_env
35+
def vpn_disable(env, user):
36+
"""Disable vpn for a user.
37+
38+
Example::
39+
slcli user vpn-disable 1234567
40+
"""
41+
42+
mgr = SoftLayer.UserManager(env.client)
43+
user_id = helpers.resolve_id(mgr.resolve_ids, user, 'username')
44+
45+
result = mgr.vpn_enable_or_disable(user_id, False)
46+
message = f"{user} vpn is successfully disabled"
47+
48+
if result:
49+
click.secho(message, fg='green')

SoftLayer/managers/user.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,17 @@ def vpn_manual(self, user_id, value):
361361
user_object = {'vpnManualConfig': value}
362362
return self.edit_user(user_id, user_object)
363363

364+
def vpn_enable_or_disable(self, user_id, value):
365+
"""Enable or Disable vpn for a user.
366+
367+
:param int user_id: User to edit.
368+
:param bool value: Value for vpn enable flag.
369+
or
370+
:param bool value: Value for vpn disable flag.
371+
"""
372+
user_object = {'sslVpnAllowedFlag': value}
373+
return self.edit_user(user_id, user_object)
374+
364375
def vpn_subnet_add(self, user_id, subnet_ids):
365376
"""Add subnets for a user.
366377

docs/cli/users.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,14 @@ Version 5.6.0 introduces the ability to interact with user accounts from the cli
6464
:prog: user vpn-password
6565
:show-nested:
6666

67+
.. click:: SoftLayer.CLI.user.vpn_enable_or_disable:vpn_enable
68+
:prog: user vpn-enable
69+
:show-nested:
70+
71+
.. click:: SoftLayer.CLI.user.vpn_enable_or_disable:vpn_disable
72+
:prog: user vpn-disable
73+
:show-nested:
74+
6775
.. click:: SoftLayer.CLI.user.apikey:cli
6876
:prog: user apikey
6977
:show-nested:

tests/CLI/modules/user_tests.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@
88
import sys
99
import unittest
1010

11-
from unittest import mock as mock
12-
1311
from SoftLayer.fixtures import SoftLayer_User_Customer
1412
from SoftLayer import testing
13+
from unittest import mock as mock
1514

1615

1716
class UserCLITests(testing.TestCase):
@@ -416,3 +415,27 @@ def test_remove_api_authentication_key(self):
416415
def test_refresh_api_authentication_key(self):
417416
result = self.run_command(['user', 'apikey', '123456', '--refresh'])
418417
self.assert_no_fail(result)
418+
419+
def test_vpn_disable(self):
420+
result = self.run_command(['user', 'vpn-disable', '8344458'])
421+
self.assert_no_fail(result)
422+
self.assert_called_with('SoftLayer_User_Customer', 'editObject', identifier=8344458)
423+
424+
result = self.run_command(['user', 'vpn-disable', '8344458'])
425+
permission_m = self.set_mock('SoftLayer_User_Customer', 'editObject')
426+
permission_m.return_value = {'sslVpnAllowedFlag': False}
427+
self.assert_no_fail(result)
428+
self.assert_called_with('SoftLayer_User_Customer', 'editObject', identifier=8344458)
429+
self.assertEqual('8344458 vpn is successfully disabled\n', result.output)
430+
431+
def test_vpn_enable(self):
432+
result = self.run_command(['user', 'vpn-enable', '8344458'])
433+
self.assert_no_fail(result)
434+
self.assert_called_with('SoftLayer_User_Customer', 'editObject', identifier=8344458)
435+
436+
result = self.run_command(['user', 'vpn-enable', '8344458'])
437+
permission_m = self.set_mock('SoftLayer_User_Customer', 'editObject')
438+
permission_m.return_value = {'sslVpnAllowedFlag': True}
439+
self.assert_no_fail(result)
440+
self.assert_called_with('SoftLayer_User_Customer', 'editObject', identifier=8344458)
441+
self.assertEqual('8344458 vpn is successfully enabled\n', result.output)

0 commit comments

Comments
 (0)