labgrid.remote package

Submodules

labgrid.remote.authenticator module

class labgrid.remote.authenticator.AuthenticatorSession[source]

Bases: sphinx.ext.autodoc.ApplicationSession

onJoin(details)[source]

labgrid.remote.client module

The remote.client module contains the functionality to connect to a coordinator, acquire a place and interact with the connected resources

exception labgrid.remote.client.Error[source]

Bases: Exception

exception labgrid.remote.client.UserError[source]

Bases: labgrid.remote.client.Error

exception labgrid.remote.client.ServerError[source]

Bases: labgrid.remote.client.Error

class labgrid.remote.client.ClientSession[source]

Bases: sphinx.ext.autodoc.ApplicationSession

The ClientSession encapsulates all the actions a Client can Invoke on the coordinator.

onConnect()[source]

Actions which are executed if a connection is successfully opened.

onChallenge(challenge)[source]
onJoin(details)[source]
on_resource_changed(exporter, group_name, resource_name, resource)[source]
on_place_changed(name, config)[source]
complete()[source]
print_resources()[source]

Print out the resources

print_places()[source]

Print out the places

print_who()[source]

Print acquired places by user

get_place(place=None)[source]
get_idle_place(place=None)[source]
get_acquired_place(place=None)[source]
print_place()[source]

Print out the current place and related resources

add_place()[source]

Add a place to the coordinator

del_place()[source]

Delete a place from the coordinator

add_alias()[source]

Add an alias for a place on the coordinator

del_alias()[source]

Delete an alias for a place from the coordinator

set_comment()[source]

Set the comment on a place

add_match()[source]

Add a match for a place, making fuzzy matching available to the client

del_match()[source]

Delete a match for a place

acquire()[source]

Acquire a place, marking it unavailable for other clients

release()[source]

Release a previously acquired place

get_target_resources(place)[source]
get_target_config(place)[source]
env()[source]
power()[source]
console()[source]
fastboot()[source]
bootstrap()[source]
labgrid.remote.client.start_session(url, realm, extra)[source]
labgrid.remote.client.main()[source]

labgrid.remote.common module

class labgrid.remote.common.ResourceEntry(data, acquired=None)[source]

Bases: object

data = Attribute(name='data', default=NOTHING, validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
acquired = Attribute(name='acquired', default=None, validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
avail
cls
params
args

arguments for resource construction

extra

extra resource information

asdict()[source]
class labgrid.remote.common.ResourceMatch(exporter, group, cls, name=None)[source]

Bases: object

exporter = Attribute(name='exporter', default=NOTHING, validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
group = Attribute(name='group', default=NOTHING, validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
cls = Attribute(name='cls', default=NOTHING, validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
name = Attribute(name='name', default=None, validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
classmethod fromstr(pattern)[source]
ismatch(resource_path)[source]
class labgrid.remote.common.Place(name, aliases=NOTHING, comment='', matches=NOTHING, acquired=None, acquired_resources=NOTHING, created=NOTHING, changed=NOTHING)[source]

Bases: object

name = Attribute(name='name', default=NOTHING, validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
aliases = Attribute(name='aliases', default=Factory(factory=<class 'set'>), validator=None, repr=True, cmp=True, hash=True, init=True, convert=<class 'set'>, metadata=mappingproxy({}))
comment = Attribute(name='comment', default='', validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
matches = Attribute(name='matches', default=Factory(factory=<class 'list'>), validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
acquired = Attribute(name='acquired', default=None, validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
acquired_resources = Attribute(name='acquired_resources', default=Factory(factory=<class 'list'>), validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
created = Attribute(name='created', default=Factory(factory=<function Place.<lambda>>), validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
changed = Attribute(name='changed', default=Factory(factory=<function Place.<lambda>>), validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
asdict()[source]
show(level=0)[source]
hasmatch(resource_path)[source]

Return True if this place as a ResourceMatch object for the given resource path.

A resource_path has the structure (exporter, group, cls, name).

touch()[source]
labgrid.remote.common.enable_tcp_nodelay(session)[source]

asyncio/autobahn does not set TCP_NODELAY by default, so we need to do it like this for now.

labgrid.remote.config module

class labgrid.remote.config.ResourceConfig(filename)[source]

Bases: object

filename = Attribute(name='filename', default=NOTHING, validator=<instance_of validator for type <class 'str'>>, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))

labgrid.remote.coordinator module

The coordinator module coordinates exported resources and clients accessing them.

class labgrid.remote.coordinator.Action[source]

Bases: enum.Enum

An enumeration.

ADD = 0
DEL = 1
UPD = 2
class labgrid.remote.coordinator.RemoteSession[source]

Bases: object

class encapsulating a session, used by ExporterSession and ClientSession

coordinator = Attribute(name='coordinator', default=NOTHING, validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
session = Attribute(name='session', default=NOTHING, validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
authid = Attribute(name='authid', default=NOTHING, validator=None, repr=True, cmp=True, hash=True, init=True, convert=None, metadata=mappingproxy({}))
key

Key of the session

name

Name of the session

class labgrid.remote.coordinator.ExporterSession(coordinator, session, authid)[source]

Bases: labgrid.remote.coordinator.RemoteSession

An ExporterSession is opened for each Exporter connecting to the coordinator, allowing the Exporter to get and set resources

groups = Attribute(name='groups', default=Factory(factory=<class 'dict'>), validator=None, repr=True, cmp=True, hash=True, init=False, convert=None, metadata=mappingproxy({}))
set_resource(groupname, resourcename, resource)[source]
get_resources()[source]

Method invoked by the exporter, get a resource from the coordinator

class labgrid.remote.coordinator.ClientSession(coordinator, session, authid)[source]

Bases: labgrid.remote.coordinator.RemoteSession

acquired = Attribute(name='acquired', default=Factory(factory=<class 'list'>), validator=None, repr=True, cmp=True, hash=True, init=False, convert=None, metadata=mappingproxy({}))
class labgrid.remote.coordinator.CoordinatorComponent[source]

Bases: sphinx.ext.autodoc.ApplicationSession

onConnect()[source]
onChallenge(challenge)[source]
onJoin(details)[source]
save()[source]
load()[source]
on_session_join(session_details)[source]
on_session_leave(session_id)[source]
attach(name, details=None)[source]
set_resource(groupname, resourcename, resource, details=None)[source]
get_resources(details=None)[source]
add_place(name, details=None)[source]
del_place(name, details=None)[source]
add_place_alias(placename, alias, details=None)[source]
del_place_alias(placename, alias, details=None)[source]
set_place_comment(placename, comment, details=None)[source]
add_place_match(placename, pattern, details=None)[source]
del_place_match(placename, pattern, details=None)[source]
acquire_place(name, details=None)[source]
release_place(name, details=None)[source]
get_places(details=None)[source]

labgrid.remote.exporter module

The remote.exporter module exports resources to the coordinator and makes them available to other clients on the same coordinator

labgrid.remote.exporter.get_free_port()[source]

Helper function to always return an unused port.

class labgrid.remote.exporter.ResourceExport(data, acquired=None)[source]

Bases: labgrid.remote.common.ResourceEntry

Represents a local resource exported via a specific protocol.

The ResourceEntry attributes contain the information for the client.

local = Attribute(name='local', default=NOTHING, validator=None, repr=True, cmp=True, hash=True, init=False, convert=None, metadata=mappingproxy({}))
local_params = Attribute(name='local_params', default=NOTHING, validator=None, repr=True, cmp=True, hash=True, init=False, convert=None, metadata=mappingproxy({}))
poll()[source]
class labgrid.remote.exporter.USBSerialPortExport(data, acquired=None)[source]

Bases: labgrid.remote.exporter.ResourceExport

ResourceExport for a USB SerialPort

class labgrid.remote.exporter.USBEthernetExport(data, acquired=None)[source]

Bases: labgrid.remote.exporter.ResourceExport

ResourceExport for a USB ethernet interface

class labgrid.remote.exporter.USBGenericExport(data, acquired=None)[source]

Bases: labgrid.remote.exporter.ResourceExport

ResourceExport for USB devices accessed directly from userspace

class labgrid.remote.exporter.ExporterSession[source]

Bases: sphinx.ext.autodoc.ApplicationSession

onConnect()[source]

Set up internal datastructures on successful connection: - Setup loop, name, authid and address - Join the coordinator as an exporter

onChallenge(challenge)[source]

Function invoked on received challege, returns just a dummy ticket at the moment, authentication is not supported yet

onJoin(details)[source]

On successful join: - export available resources - bail out if we are unsuccessful

onLeave(details)[source]

Cleanup after leaving the coordinator connection

onDisconnect()[source]
acquire(group_name, resource_name)[source]
release(group_name, resource_name)[source]
poll()[source]
add_resource(group_name, resource_name, cls, params)[source]

Add a resource to the exporter and update status on the coordinator

update_resource(group_name, resource_name)[source]

Update status on the coordinator

labgrid.remote.exporter.main()[source]