Skip to content

Commit 27dc840

Browse files
authored
Merge pull request #83 from ushiboy/feat/connection-show-all
Feat: connection show all
2 parents 3f6095a + a2a307f commit 27dc840

File tree

5 files changed

+81
-0
lines changed

5 files changed

+81
-0
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,16 @@ Use `active` argument to show only the active profile.
160160
nmcli.connection.show(name: str, show_secrets: bool = False, active: bool = False) -> ConnectionDetails
161161
```
162162

163+
#### nmcli.connection.show_all
164+
165+
Show all connections.
166+
167+
Use `active` argument to show only active connections.
168+
169+
```
170+
nmcli.connection.show_all(active: bool = False) -> List[Connection]
171+
```
172+
163173
#### nmcli.connection.reload
164174

165175
Reload all connection files from disk.

nmcli/_connection.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ def down(self, name: str, wait: int = None) -> None:
3434
def show(self, name: str, show_secrets: bool = False, active: bool = False) -> ConnectionDetails:
3535
raise NotImplementedError
3636

37+
def show_all(self, active: bool = False) -> List[Connection]:
38+
raise NotImplementedError
39+
3740
def reload(self) -> None:
3841
raise NotImplementedError
3942

@@ -104,5 +107,17 @@ def show(self, name: str, show_secrets: bool = False, active: bool = False) -> C
104107
results[key] = None if value in ('--', '""') else value
105108
return results
106109

110+
def show_all(self, active: bool = False) -> List[Connection]:
111+
cmd = ['connection', 'show']
112+
if active:
113+
cmd += ['--active']
114+
r = self._syscmd.nmcli(cmd)
115+
results = []
116+
for row in r.split('\n')[1:]:
117+
if len(row) == 0:
118+
continue
119+
results.append(Connection.parse(row))
120+
return results
121+
107122
def reload(self) -> None:
108123
self._syscmd.nmcli(['connection', 'reload'])

nmcli/dummy/_connection.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,23 +31,30 @@ def down_args(self):
3131
def show_args(self):
3232
return self._show_args
3333

34+
@property
35+
def show_all_args(self):
36+
return self._show_all_args
37+
3438
@property
3539
def called_reload(self) -> int:
3640
return self._called_reload
3741

3842
def __init__(self,
3943
result_call: List[Connection] = None,
4044
result_show: ConnectionDetails = None,
45+
result_show_all: List[Connection] = None,
4146
raise_error: Exception = None):
4247
self._raise_error = raise_error
4348
self._result_call = result_call or []
4449
self._result_show = result_show
50+
self._result_show_all = result_show_all or []
4551
self._add_args: List[Tuple] = []
4652
self._modify_args: List[Tuple] = []
4753
self._delete_args: List[Tuple] = []
4854
self._up_args: List[Tuple] = []
4955
self._down_args: List[Tuple] = []
5056
self._show_args: List[Tuple] = []
57+
self._show_all_args: List[Tuple] = []
5158
self._called_reload = 0
5259

5360
def __call__(self) -> List[Connection]:
@@ -86,6 +93,11 @@ def show(self, name: str, show_secrets: bool = False, active: bool = False) -> C
8693
return self._result_show
8794
raise ValueError("'result_show' is not properly initialized")
8895

96+
def show_all(self, active: bool = False) -> List[Connection]:
97+
self._raise_error_if_needed()
98+
self._show_all_args.append((active,))
99+
return self._result_show_all
100+
89101
def reload(self) -> None:
90102
self._raise_error_if_needed()
91103
self._called_reload += 1

tests/dummy/test_connection.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,28 @@ def test_show_when_no_arguments_are_passed():
134134
c.show('MyHome')
135135

136136

137+
def test_show_all():
138+
result_show_all = [
139+
Connection('AP1', '3eac760c-de77-4823-9ab8-773c276daca3',
140+
'wifi', 'wlan0'),
141+
Connection('Home', '700f5b18-cbb3-4d38-9c61-e3bc3a3852b9',
142+
'ethernet', 'eth0')
143+
]
144+
c = DummyConnectionControl(result_show_all=result_show_all)
145+
146+
assert c.show_all() == result_show_all
147+
assert c.show_all_args[0] == (False,)
148+
149+
c.show_all(active=True)
150+
assert c.show_all_args[1] == (True,)
151+
152+
153+
def test_show_all_when_raise_error():
154+
c = DummyConnectionControl(raise_error=Exception)
155+
with pytest.raises(Exception):
156+
c.show_all()
157+
158+
137159
def test_reload():
138160
c = DummyConnectionControl()
139161
c.reload()

tests/test_connection.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,28 @@ def test_show():
132132
'connection', 'show', "--active", name]
133133

134134

135+
def test_show_all():
136+
s = DummySystemCommand('''NAME UUID TYPE DEVICE
137+
AP1 3eac760c-de77-4823-9ab8-773c276daca3 wifi wlan0
138+
Home 700f5b18-cbb3-4d38-9c61-e3bc3a3852b9 ethernet eth0
139+
Wired connection 1 700f5b18-cbb3-4d38-9c61-999999999999 ethernet eth1''')
140+
connection = ConnectionControl(s)
141+
142+
r = connection.show_all()
143+
assert s.passed_parameters == ['connection', 'show']
144+
assert r == [
145+
Connection('AP1', '3eac760c-de77-4823-9ab8-773c276daca3',
146+
'wifi', 'wlan0'),
147+
Connection('Home', '700f5b18-cbb3-4d38-9c61-e3bc3a3852b9',
148+
'ethernet', 'eth0'),
149+
Connection('Wired connection 1',
150+
'700f5b18-cbb3-4d38-9c61-999999999999', 'ethernet', 'eth1')
151+
]
152+
153+
connection.show_all(active=True)
154+
assert s.passed_parameters == ['connection', 'show', '--active']
155+
156+
135157
def test_reload():
136158
s = DummySystemCommand()
137159
connection = ConnectionControl(s)

0 commit comments

Comments
 (0)