Skip to content

Commit 361a7f7

Browse files
Thomas Prestonjluebbe
authored andcommitted
client: Add named resource arg to SSH subparser
Sometimes a remote place might have multiple NetworkService resources, for example a single device running multiple operating systems. In this case, we must specify which NetworkService resource to use for the local SSHDriver instance. Signed-off-by: Thomas Preston <thomas.preston@codethink.co.uk>
1 parent a19d78d commit 361a7f7

2 files changed

Lines changed: 7 additions & 3 deletions

File tree

CHANGES.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ New Features in 0.5.0
66
- Support for Eaton ePDU added, and can be used as a NetworkPowerPort.
77
- Consider a combination of multiple "lg_feature" markers instead of
88
considering only the closest marker.
9+
- The labgrid client SSH command is now able to instantiate the SSHDriver when
10+
there are multiple NetworkService resources available.
911

1012
Bug fixes in 0.5.0
1113
~~~~~~~~~~~~~~~~~~

labgrid/remote/client.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,18 +1069,19 @@ def _get_ssh(self):
10691069

10701070
from ..resource import NetworkService
10711071
try:
1072-
target.get_resource(NetworkService)
1072+
resource = target.get_resource(NetworkService, name=self.args.name)
10731073
except NoResourceFoundError:
10741074
ip = self._get_ip(place)
10751075
if not ip:
10761076
return
1077-
NetworkService(target, address=str(ip), username='root')
1077+
resource = NetworkService(target, address=str(ip), username='root')
10781078

10791079
from ..driver.sshdriver import SSHDriver
10801080
try:
10811081
drv = target.get_driver(SSHDriver)
10821082
except NoDriverFoundError:
1083-
drv = SSHDriver(target, name=None)
1083+
target.set_binding_map({"networkservice": resource.name})
1084+
drv = SSHDriver(target, name=resource.name)
10841085
target.activate(drv)
10851086
return drv
10861087

@@ -1690,6 +1691,7 @@ def main():
16901691

16911692
subparser = subparsers.add_parser('ssh',
16921693
help="connect via ssh (with optional arguments)")
1694+
subparser.add_argument('--name', '-n', help="optional resource name")
16931695
subparser.set_defaults(func=ClientSession.ssh)
16941696

16951697
subparser = subparsers.add_parser('scp',

0 commit comments

Comments
 (0)