1# Copyright 2015 The Chromium OS Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4# 5# Expects to be run in an environment with sudo and no interactive password 6# prompt, such as within the Chromium OS development chroot. 7 8 9"""This file provides core logic for servo verify/repair process.""" 10 11from autotest_lib.server.hosts import servo_host 12 13 14# Names of the host attributes in the database that represent the values for 15# the servo_host and servo_port for a servo connected to the DUT. 16PLANKTON_HOST_ATTR = 'plankton_host' 17PLANKTON_PORT_ATTR = 'plnakton_port' 18 19 20def make_plankton_hostname(dut_hostname): 21 """Given a DUT's hostname, return the hostname of its servo. 22 23 @param dut_hostname: hostname of a DUT. 24 25 @return hostname of the DUT's servo. 26 27 """ 28 host_parts = dut_hostname.split('.') 29 host_parts[0] = host_parts[0] + '-plankton' 30 return '.'.join(host_parts) 31 32 33class PlanktonHost(servo_host.ServoHost): 34 """Host class for a host that controls a servo, e.g. beaglebone.""" 35 36 37 def _initialize(self, plankton_host='localhost', plankton_port=9998, 38 required_by_test=True, is_in_lab=None, *args, **dargs): 39 """Initialize a ServoHost instance. 40 41 A ServoHost instance represents a host that controls a servo. 42 43 @param plankton_host: Name of the host where the servod process 44 is running. 45 @param plankton_port: Port the servod process is listening on. 46 47 """ 48 super(PlanktonHost, self)._initialize(plankton_host, plankton_port, 49 False, None, *args, **dargs) 50 51 52def create_plankton_host(plankton_args): 53 """Create a PlanktonHost object used to access plankton servo 54 55 The `plankton_args` parameter is a dictionary specifying optional 56 Servo client parameter overrides (i.e. a specific host or port). 57 When specified, the caller requires that an exception be raised 58 unless both the PlanktonHost and the Servo are successfully 59 created. 60 61 @param plankton_args: A dictionary that contains args for creating 62 a PlanktonHost object, 63 e.g. {'planton_host': '172.11.11.111', 64 'plankton_port': 9999}. 65 See comments above. 66 67 @returns: A PlanktonHost object or None. See comments above. 68 69 """ 70 # TODO Make this work in the lab chromium:564836 71 if plankton_args is None: 72 return None 73 return PlanktonHost(Required_by_test=True, is_in_lab=False, **plankton_args) 74