73 lines
2.6 KiB
Python
73 lines
2.6 KiB
Python
# Copyright 2015 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
#
|
|
# Expects to be run in an environment with sudo and no interactive password
|
|
# prompt, such as within the Chromium OS development chroot.
|
|
|
|
|
|
"""This file provides core logic for servo verify/repair process."""
|
|
|
|
from autotest_lib.server.hosts import servo_host
|
|
|
|
|
|
# Names of the host attributes in the database that represent the values for
|
|
# the servo_host and servo_port for a servo connected to the DUT.
|
|
PLANKTON_HOST_ATTR = 'plankton_host'
|
|
PLANKTON_PORT_ATTR = 'plnakton_port'
|
|
|
|
|
|
def make_plankton_hostname(dut_hostname):
|
|
"""Given a DUT's hostname, return the hostname of its servo.
|
|
|
|
@param dut_hostname: hostname of a DUT.
|
|
|
|
@return hostname of the DUT's servo.
|
|
|
|
"""
|
|
host_parts = dut_hostname.split('.')
|
|
host_parts[0] = host_parts[0] + '-plankton'
|
|
return '.'.join(host_parts)
|
|
|
|
|
|
class PlanktonHost(servo_host.ServoHost):
|
|
"""Host class for a host that controls a servo, e.g. beaglebone."""
|
|
|
|
|
|
def _initialize(self, plankton_host='localhost', plankton_port=9998,
|
|
required_by_test=True, is_in_lab=None, *args, **dargs):
|
|
"""Initialize a ServoHost instance.
|
|
|
|
A ServoHost instance represents a host that controls a servo.
|
|
|
|
@param plankton_host: Name of the host where the servod process
|
|
is running.
|
|
@param plankton_port: Port the servod process is listening on.
|
|
|
|
"""
|
|
super(PlanktonHost, self)._initialize(plankton_host, plankton_port,
|
|
False, None, *args, **dargs)
|
|
|
|
|
|
def create_plankton_host(plankton_args):
|
|
"""Create a PlanktonHost object used to access plankton servo
|
|
|
|
The `plankton_args` parameter is a dictionary specifying optional
|
|
Servo client parameter overrides (i.e. a specific host or port).
|
|
When specified, the caller requires that an exception be raised
|
|
unless both the PlanktonHost and the Servo are successfully
|
|
created.
|
|
|
|
@param plankton_args: A dictionary that contains args for creating
|
|
a PlanktonHost object,
|
|
e.g. {'planton_host': '172.11.11.111',
|
|
'plankton_port': 9999}.
|
|
See comments above.
|
|
|
|
@returns: A PlanktonHost object or None. See comments above.
|
|
|
|
"""
|
|
# TODO Make this work in the lab chromium:564836
|
|
if plankton_args is None:
|
|
return None
|
|
return PlanktonHost(Required_by_test=True, is_in_lab=False, **plankton_args)
|