host.remoteHost¶
Abstract base for network-reached hosts.
RemoteHost is the common ancestor of every host class that talks to a
target across a network — UnixHost (SSH/Telnet to a bash shell),
EmbeddedHost (telnet to an RTOS shell), and any future siblings such
as a Windows-host class. It is deliberately distinct from LocalHost,
which runs commands on the local machine and shares no network plumbing.
History: this name used to belong to the concrete SSH/Telnet bash host.
That class is now UnixHost; RemoteHost is the abstract parent.
The split makes the OS family of a host explicit (lab data carries an
osType field) and gives embedded targets a place to live alongside Unix
ones without lying about their shape.
RemoteHost is intentionally not a dataclass. The concrete subclasses
are @dataclass(slots=True) and the field-ordering rules of dataclass
inheritance (no non-default field after a default one) make a shared dataclass
base awkward. Instead this base owns the behavior shared by every remote
host — host naming and the SshHopTransport machinery — and declares, as
bare annotations, the instance attributes those shared methods rely on. Each
concrete subclass supplies the real @dataclass fields.
- otto.host.remoteHost.OsType¶
Profile selector recorded on a host (the
osTypefield).Built-ins:
unix(UnixHost),embedded(genericEmbeddedHost),zephyr(ZephyrHost). Custom profiles add more names. The base family (unix vs embedded) is derived from the host class, not from this string.
- class otto.host.remoteHost.RemoteHost¶
Bases:
BaseHostAbstract base class for any host reached over a network.
Concrete subclasses (
UnixHost,EmbeddedHost) supply the transport-specific session/transfer machinery as@dataclassfields. Do not instantiate this class directly.The bare annotations below are the instance-attribute contract every concrete subclass must satisfy. They carry no values, so they create no slots and do not participate in the subclasses’
@dataclassfield collection — they exist purely so the shared methods here (and callers holding aRemoteHost-typed reference) type-check.- ip : --is-rst--str¶
IP address of the host.
- ne : --is-rst--str¶
Network element to which this host belongs.
- id : --is-rst--str¶
Unique identifier for this host.
- name : --is-rst--str¶
Human-readable name; auto-generated from
ne/boardif not given.
- creds : --is-rst--dict[str, str]¶
Users and their respective passwords for this host.
- resources : --is-rst--set[str]¶
Names of resources required to use this host.
- log : --is-rst--bool¶
Whether this host logs its output to stdout and log files.
- user : --is-rst--Optional[str]¶
User with which to log in, or None to use the first entry in
creds.
- neId : --is-rst--Optional[int]¶
Network element identifier, or None when no disambiguation is needed.
- board : --is-rst--Optional[str]¶
Board type name, or None.
- slot : --is-rst--Optional[int]¶
Physical slot number of the board, or None.
- hop : --is-rst--Optional[str]¶
Host ID of the intermediate hop used to reach this host, or None.
- osType : --is-rst--OsType¶
Profile selector recorded on this host (see
OsType). The base family (unix vs embedded) is derived from the host class, not this string.
- osName : --is-rst--Optional[str]¶
Kernel/OS name (e.g.
Linux,Zephyr).
- osVersion : --is-rst--Optional[str]¶
OS/kernel version string, or None if unspecified.
- default_dest_dir : --is-rst--Path¶
Per-host default directory that
put()/get()resolve a relative or emptydest_diragainst. Lets a fan-out helper likedo_for_all_hosts()pass one generic destination (Path()) and have each host land the files where its filesystem actually lives — e.g./RAM:on a Zephyr FAT target,/lfson a Zephyr LittleFS target. Defaults toPath()on Unix, which preserves the existing “relative path lands in the SSH user’s home” behavior.
- snmp : --is-rst--Optional[SnmpOptions]¶
Optional per-host SNMP polling config (lab
snmpblock), or None. When set, otto’s monitor collects this host over SNMP instead of by running shell commands. Declared on both concrete subclasses; seeSnmpOptions.
- max_filename_len : --is-rst--int¶
Upper bound on the basename length (including extension) accepted by the target’s filesystem. Defaults to
255on every concrete subclass — the LinuxNAME_MAX, also the cap for ext4 / XFS / Btrfs / NTFS and the typical LittleFS ceiling. Override per-host when the firmware enforces a tighter limit (e.g.32for a Zephyr build that setsCONFIG_FS_FATFS_MAX_LFN=32, or12for a stock FAT 8.3 build without LFN support).put/getreject over-limit names up front with a clear message instead of letting the device produce an opaque error like-ENOENTorFile name too long.