devices

Devices module.

class homer.devices.Device(fqdn, metadata, config, private)

Bases: tuple

Create new instance of Device(fqdn, metadata, config, private)

config: typing.Mapping

Alias for field number 2

fqdn: str

Alias for field number 0

metadata: typing.MutableMapping

Alias for field number 1

private: typing.Mapping

Alias for field number 3

class homer.devices.Devices(devices: Mapping[str, MutableMapping[str, str]], devices_config: Mapping[str, Mapping], private_config: Mapping[str, Mapping] | None = None)[source]

Bases: UserDict

Collection of devices, accessible by FQDN as a dict or role and site via dedicated accessors.

Initialize the instance.

Parameters:
  • devices (typing.Mapping[str, typing.MutableMapping[str, str]]) -- the devices configuration with FQDN as key and a dictionary with the device metadata as value.

  • devices_config (typing.Mapping[str, typing.Mapping]) -- the devices configuration with FQDN as key and a dictionary with the device-specific configuration as value.

  • private_config (typing.Optional[typing.Mapping[str, typing.Mapping]], default: None) -- an optional dictionary of the devices private configuration with the FQDN as key and a dictionary of device-specific private configuration as value. It cannot have top level keys in common with the same device public configuration.

query(query_string: str) List[homer.devices.Device][source]

Get the devices matching the query.

Todo

If needed, expand the query capabilities with a proper syntax using pyparsing.

Parameters:

query_string (str) -- the query_string to use to filter for.

Raises:

homer.exceptions.HomerError -- on invalid query.

Return type:

typing.List[homer.devices.Device]

Returns:

A list of Device objects.