mirror of
https://github.com/ARM-software/workload-automation.git
synced 2025-02-21 20:38:57 +00:00
LinuxManager: Added LinuxManager
Replaces BaseLinuxDevice & LinuxDevice
This commit is contained in:
parent
1599c1e0ed
commit
6f0de17201
65
wlauto/managers/linux.py
Normal file
65
wlauto/managers/linux.py
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
from wlauto.core.device_manager import DeviceManager
|
||||||
|
from wlauto import Parameter, Alias
|
||||||
|
from wlauto.utils.types import boolean
|
||||||
|
from wlauto.exceptions import ConfigError
|
||||||
|
|
||||||
|
from devlib.target import LinuxTarget
|
||||||
|
|
||||||
|
|
||||||
|
class LinuxManager(DeviceManager):
|
||||||
|
|
||||||
|
name = "linux"
|
||||||
|
target_type = LinuxTarget
|
||||||
|
|
||||||
|
aliases = [
|
||||||
|
Alias('generic_linux'),
|
||||||
|
]
|
||||||
|
|
||||||
|
parameters = [
|
||||||
|
Parameter('host', mandatory=True, description='Host name or IP address for the device.'),
|
||||||
|
Parameter('username', mandatory=True, description='User name for the account on the device.'),
|
||||||
|
Parameter('password', description='Password for the account on the device (for password-based auth).'),
|
||||||
|
Parameter('keyfile', description='Keyfile to be used for key-based authentication.'),
|
||||||
|
Parameter('port', kind=int, default=22, description='SSH port number on the device.'),
|
||||||
|
Parameter('password_prompt', default='[sudo] password',
|
||||||
|
description='Prompt presented by sudo when requesting the password.'),
|
||||||
|
Parameter('use_telnet', kind=boolean, default=False,
|
||||||
|
description='Optionally, telnet may be used instead of ssh, though this is discouraged.'),
|
||||||
|
Parameter('boot_timeout', kind=int, default=120,
|
||||||
|
description='How long to try to connect to the device after a reboot.'),
|
||||||
|
Parameter('working_directory', default="/root/wa", override=True),
|
||||||
|
Parameter('binaries_directory', default="/root/wa/bin", override=True),
|
||||||
|
]
|
||||||
|
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
super(LinuxManager, self).__init__(**kwargs)
|
||||||
|
self.platform = self.platform_type(core_names=self.core_names, # pylint: disable=E1102
|
||||||
|
core_clusters=self.core_clusters,
|
||||||
|
modules=self.modules)
|
||||||
|
self.target = self.target_type(connection_settings=self._make_connection_settings(),
|
||||||
|
connect=False,
|
||||||
|
platform=self.platform,
|
||||||
|
working_directory=self.working_directory,
|
||||||
|
executables_directory=self.binaries_directory,)
|
||||||
|
|
||||||
|
def validate(self):
|
||||||
|
if self.password and self.keyfile:
|
||||||
|
raise ConfigError("Either `password` or `keyfile` must be given but not both")
|
||||||
|
|
||||||
|
def connect(self):
|
||||||
|
self.target.connect(self.boot_timeout)
|
||||||
|
|
||||||
|
def _make_connection_settings(self):
|
||||||
|
connection_settings = {}
|
||||||
|
connection_settings['host'] = self.host
|
||||||
|
connection_settings['username'] = self.username
|
||||||
|
connection_settings['port'] = self.port
|
||||||
|
connection_settings['telnet'] = self.use_telnet
|
||||||
|
connection_settings['password_prompt'] = self.password_prompt
|
||||||
|
|
||||||
|
if self.keyfile:
|
||||||
|
connection_settings['keyfile'] = self.keyfilehollis
|
||||||
|
elif self.password:
|
||||||
|
connection_settings['password'] = self.password
|
||||||
|
|
||||||
|
return connection_settings
|
Loading…
x
Reference in New Issue
Block a user