History log of /external/autotest/server/hosts/abstract_ssh.py
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
5ace6f2e17f808efbee863a7d7dbe1bc52527a19 07-Jan-2016 Simran Basi <sbasi@google.com> [autotest] Support Android/Brillo suite runs.

This change does 3 key things:

1) Enables suite runs to use the production code currently
deployed on the lab servers. This disables this requirement
and now run_suite.py can be passed --run_prod_code. This means
that it will use the control files on the drone and SSP has
been disabled.
2) Refactors out the AFE interactions for applying version labels
out of the host objects. These utilities are in a new module
called afe_utils. The afe_utils:host_in_lab function
determines if a host is running in an lab environment and if
it is in the AFE.
The introduction of afe_utils enables further cleanup of the
cros_host object.
3) Enables provisioning for Android/Brillo devices. Added a new
site-test and provision attribute. Run_suite will determine
if an Android/Brillo build is being used and will set the
correct version prefix. Then the scheduler/provision code
will find an appropriate device and kick off the
provision_AndroidUpdate test to install the build prior to
test runs.

BUG=chromium:574566
TEST=On my moblab:
./run_suite.py --build=git_mnc-brillo-dev/dragonboard-userdebug/2558576 \
--board=brillo-dragonboard --suite_name=brillo-bvt --run_prod_code \
--pool=''
./site_utils/run_suite.py --board=peppy --build=peppy-release/LATEST \
--suite_name=dummy --pool=''
test_that 100.96.51.40 dummy_PassServer
DEPLOY=apache

Change-Id: I5a81e6bd989188b7c0621e2a76752a39033f9782
Reviewed-on: https://chromium-review.googlesource.com/323781
Commit-Ready: Simran Basi <sbasi@chromium.org>
Tested-by: Simran Basi <sbasi@chromium.org>
Reviewed-by: Christopher Wiley <wiley@chromium.org>
Reviewed-by: Fang Deng <fdeng@chromium.org>
Reviewed-by: Simran Basi <sbasi@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
1bf60eb788365f083d0ee8045a6556f906149dec 02-Dec-2015 Simran Basi <sbasi@google.com> [autotest] autoserv add --lab & --host_attributes arguments

Added two new flags to autoserv.

--lab indicates that autoserv is running in the lab and has
the full Autotest infrastructure at its disposal.

--host_attributes allows host attribute information that is
usually in the database to be retrievable from the command
line arguments.

If --lab is pulled in, autoserv will request the host attributes
from the database at test runtime.

From here this change, then updates the concept of the "machines"
list that test control files receive to now be a list of dicts
that contain the machine hostname and host attributes. This will
enable identifing information the hosts library needs to create
host objects to be available whether or not there is a database
present.

BUG=chromium:564343
TEST=local autoserv runs. Also verified scheduler changes work
via MobLab. waiting on trybot results.
DEPLOY=scheduler

Change-Id: I6021de11317e29e2e6c084d863405910c7d1a71d
Reviewed-on: https://chromium-review.googlesource.com/315230
Commit-Ready: Simran Basi <sbasi@chromium.org>
Tested-by: Simran Basi <sbasi@chromium.org>
Reviewed-by: Simran Basi <sbasi@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
21eb6492d55d65aee16a381f194cd24baaa1765e 14-Nov-2015 Marc Herbert <marc.herbert@intel.com> autotest: IPv6 support

IPv4 requires a DHCP server. IPv4 addresses change more often than
IPv6 ones, which breaks long-running tests. IPv4 addresses are mangled
by NATs. etc.

Unit tests:
- Extend coverage with additional tests.
- Adjust exception types in some negative tests.
- "host:port" negative test removed since port detection is now
stricter, considering digits only. Preserving the laxer detection
would make the code a bit more complex for no real value.
- "host:22:33" is now mistaken for an IPv6 address. Remove this
negative test too since there isn't anymore a way to invalidate
without adding / backporting from Python 3.3 some minimal IPv6
address parser.

Manually tested these two types of input and they still fail; however
failures come later as "Could not resolve hostname" network errors,
beyond the reach of unit tests.

BUG=none
TEST=./utils/unittest_suite.py --debug -r server
TEST=\
v4=10.1.2.3
v6=fe80::9249:faff:fe00:7400%p4p1
hname=yourdut.local
mytest=hardware_DiskSize
(set -ex;
for a in $v4 ${v4}:22 $v6 [$v6] [$v6]:22 $hname ${hname}:22; do
test_that "$a" $mytest
stat /tmp/test_that_latest/results-1-"$mytest/$mytest/"
done ); [ $? -eq 0 ] || echo FAILED
# cannot trust autotest's "PASS", see http://crbug.com/555073
TEST=\
# Disable rsync on DUT:
mount -o remount,rw /
( cd /usr/local/bin/; mv rsync rsync.disabled )
# On host:
# run again same test loop above (this time with "scp" instead of rsync)

Change-Id: Icb7d232a9f64d1277810758a5c6c16d5711a0163
Reviewed-on: https://chromium-review.googlesource.com/312719
Commit-Ready: Marc Herbert <marc.herbert@intel.com>
Tested-by: Michael W Mason <michael.w.mason@intel.com>
Reviewed-by: Dan Shi <dshi@chromium.org>
Reviewed-by: Michael W Mason <michael.w.mason@intel.com>
/external/autotest/server/hosts/abstract_ssh.py
58e5dd3b600081607d5ecb514d9bf3ebea83c533 17-Oct-2015 Roshan Pius <rpius@google.com> autotest: Create RpcServerTracker for Host objects.

Create a generic RpcServerTracker which can be used by any host object
to start and manage RPC server connections. The RPCServerTracker uses
the associated host object to start the required XML/JSON RPC server on the
DUT and forwards the port from the AutoTest Server to Brillo/Cros DUT.
This CL basically ports over most of the RPC server connection
management code from CrosHost into a separate class so that it can be
reused by AdbHost as well.
AdbHost modifies the |host.rpc_port_forward/disconnect| method to forward the
RPC connection from the AdbHost to Brillo DUT using 'adb forward'.

Related Change:
1. Add a |verbose| flag to the |host.run| method in AdbHost so that we can
reuse the |host.run_background| method already implemented by SshHost.

BUG=brillo:24338381
TEST=Ran network_WiFi_SimpleConnect.wifi_check11g on both dragonboard
and cros DUT.
`test_that $host --board=panther network_WiFi_SimpleConnect.wifi_check11g`

Change-Id: I7e44cbd5897871f01f320cb57377a28491571478
Reviewed-on: https://chromium-review.googlesource.com/307163
Commit-Ready: Roshan Pius <rpius@chromium.org>
Tested-by: Roshan Pius <rpius@chromium.org>
Reviewed-by: Roshan Pius <rpius@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
a58163a1e71e1b96b19ce828541368dc17eab24e 14-Oct-2015 Roshan Pius <rpius@google.com> autotest: Flag to indicate if host supports client install.

Add a |is_client_install_supported| flag to bypass autotest client
install checks for Brillo ADBhosts.

BUG=brillo:24338381
Change-Id: I0dacbb4cef6f02d56bb6d1481beb4fdce90c3fd1
Reviewed-on: https://chromium-review.googlesource.com/305569
Commit-Ready: Roshan Pius <rpius@chromium.org>
Tested-by: Roshan Pius <rpius@chromium.org>
Reviewed-by: Roshan Pius <rpius@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
1621c631812eb4e6cd2a91979499570f99faf325 14-Oct-2015 Simran Basi <sbasi@google.com> adb_host: Support login as user adb.

Some adb_host systems might not allow ssh'ing in as root. When
this occurs, adb_host will try to use user 'adb' instead.

BUG=chromium:538641
TEST=host.create_host returns an adb_host for a machine which it
does not have root access for.

Change-Id: I70f88a64e8ad931021f6e7ed0a8af47fe91f93f3
Reviewed-on: https://chromium-review.googlesource.com/305507
Commit-Ready: Simran Basi <sbasi@chromium.org>
Tested-by: Simran Basi <sbasi@chromium.org>
Reviewed-by: Simran Basi <sbasi@chromium.org>
Reviewed-by: Kevin Cheng <kevcheng@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
a76bef0c3790e890b62c306b886d0d9be32e8dd2 29-Sep-2015 Gilad Arnold <garnold@chromium.org> Add an OS type getter for CrOS and ADB hosts.

This is needed for tests to be able to distinguish between the two host
flavors.

BUG=b:24505378
TEST=None

Change-Id: I9eb94c3c4b675693463c9c635b93339e3f157a56
Reviewed-on: https://chromium-review.googlesource.com/303024
Commit-Ready: Gilad Arnold <garnold@chromium.org>
Tested-by: Gilad Arnold <garnold@chromium.org>
Reviewed-by: Simran Basi <sbasi@chromium.org>
Reviewed-by: Dan Shi <dshi@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
a155e7e44482ece46d1f5aec5f202c7209bf2f7f 20-Aug-2015 Cheng-Yi Chiang <cychiang@chromium.org> [autotest] Move _create_ssh_tunnel from CrosHost to AbstractSSHHost

_create_ssh_tunnel is also useful for subclass of AbstractSSHHost like
ChameleonHost. Move _create_ssh_tunnel from CrosHost to AbstractSSHHost.

BUG=chromium:521443
TEST=run audio_AudioBasicHeadphone test on a network that does not block
chameleon port and make sure CrosHost tunning still works.

Change-Id: I0c7c38777ea052f7abb4cf0393bc7630d91aa778
Reviewed-on: https://chromium-review.googlesource.com/295021
Reviewed-by: Hung-ying Tyan <tyanh@chromium.org>
Commit-Queue: Cheng-Yi Chiang <cychiang@chromium.org>
Tested-by: Cheng-Yi Chiang <cychiang@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
0d3616c062d89b94ea880b7b3a976bc613544ad3 18-Jul-2015 mukesh agrawal <quiche@chromium.org> autotest: fix silent failure in send_file()

When passed a file object representing an at-EOF file,
send_file() fails silently. That is, the file is not copied,
but the test proceeds.

The rsync command actually fails, as follows:
1) Pass in a file object, representing an at-EOF file.
2) Iterating over a file reads the lines in the file.
Hence, list iteration over a file creates a list
of the lines in the file.
3) Since our file is at EOF, the list comprehension in
send_file() returns an empty list.
4) Because the list is empty, rsync gets fewer arguments
than expected.
5) rsync interprets the destination argument as the source
argument.
6) The "source" does not exist.
7) rsync fails.

However, we automatically retry with scp, and the retry
"succeeds". The retry doesn't actually copy any files over, but
the method returns without failure. The reason for this is that
the scp code has special case handling for when the transformed
file list is empty. I believe this special-case emulates rsync's
behavior for a |path/| argument, where the directory is empty.
(rsync makes a distinction between |path|, and |path/|.)

Anyway, this CL fixes the silent failure for an at-EOF file handle,
by explictly checking for the case where iteration over the
|source| yields an empty list. This does not change behavior for
the scp retry, since the scp retry does a fresh iteration over
|source|. Hence, we do not change the behavior when |source| is
an empty directory.

I'm resisting the temptation to raise TestError for any calls
with a file object, because some existing code might depend
on the current handling of file objects.

While there: check for NULL in the file paths. NULL will cause
failures by truncating the rsync command string. (Python strings
can contain NULL, but C strings cannot.)

BUG=chromium:511320
TEST=manual

Manual test:
1) Have a test call send_file() with the result of
tempfile.NamedTemporaryFile(). Observe a TestError
indicating that the source does not name any files.
2) Have a test call send_file() with a not-at-EOF file
handle, where the file contains NULLs. Observe a
TestError for the NUL case.
3) Have a test call send_file with a |path/| to an empty
directory. Observe that send_file() does not raise any Error.
Observe that the debug log includes the empty source list
message.

Change-Id: I26e70bb390d8728767c350ac494b1b7a56af8c36
Reviewed-on: https://chromium-review.googlesource.com/286670
Trybot-Ready: mukesh agrawal <quiche@chromium.org>
Tested-by: mukesh agrawal <quiche@chromium.org>
Reviewed-by: Aviv Keshet <akeshet@chromium.org>
Commit-Queue: mukesh agrawal <quiche@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
3b858a2c432caad62403fa646508688e2d419a13 18-Mar-2015 Simran Basi <sbasi@google.com> Catch all errors when provisioning & make start_master_ssh multiprocess safe

Currently autoupdating.py only catches AutoservRunErrors when
updating the rootfs and stateful, thus allowing autotest
infrastructure errors to not be caught properly.

Updates start_master_ssh so that it protects against multiple
processes cleaning up the old connection and creating a new one
in parallel.

BUG=chromium:468062
TEST=provision still works on moblab.

Change-Id: I5a2c31ead5b15ca66c1f8035df27e9c3420b41a8
Reviewed-on: https://chromium-review.googlesource.com/260664
Trybot-Ready: Simran Basi <sbasi@chromium.org>
Tested-by: Simran Basi <sbasi@chromium.org>
Reviewed-by: Don Garrett <dgarrett@chromium.org>
Commit-Queue: Simran Basi <sbasi@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
c83ab1578ee9bbb2ac8611057ea4b348bac2bbc5 20-Dec-2014 J. Richard Barnette <jrbarnette@chromium.org> Eliminate master connection spam from abstract_ssh logs.

In abstract_ssh, the checks for establishing the master ssh
connection came with some very noisy debug code. The messages
have reached the point where they're more spam than information,
so remove them.

BUG=None
TEST=None

Change-Id: I4ff185b06735b3a19e30b53a09ceed33796c4101
Reviewed-on: https://chromium-review.googlesource.com/236992
Reviewed-by: Fang Deng <fdeng@chromium.org>
Tested-by: Richard Barnette <jrbarnette@chromium.org>
Commit-Queue: Richard Barnette <jrbarnette@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
c07b89329ea2527f7fd41d3412ff691db044a5e5 12-Dec-2014 Dan Shi <dshi@chromium.org> [autotest] Delay retrieving IP address of a host.

The error raised in initializer will lead to CrosHost failed to be initialized.
We need to delay this action only when it's requested. so CrosHost can be
initialized and continue working for cases like repairing, in which case the
dut can be down and don't have an IP address if DHCP server does not have
static IP for it.

BUG=chromium:441511
TEST=local test.

Change-Id: I3e83c4a9ddfd00add4b373f5a2c9339d77f61aa6
Reviewed-on: https://chromium-review.googlesource.com/234851
Trybot-Ready: Dan Shi <dshi@chromium.org>
Tested-by: Dan Shi <dshi@chromium.org>
Reviewed-by: Richard Barnette <jrbarnette@chromium.org>
Commit-Queue: Dan Shi <dshi@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
35d661e09666d315325f8942d06949ca7283666f 26-Sep-2014 MK Ryu <mkryu@google.com> [autotest] Integrate crashlog collection into repair workflow.

When a DUT goes offline before logs are gathered, we lose those
logs if the DUT is re-imaged.
To grab such logs as much as we can, we integrate crashlog
collection into the repair workflow.

BUG=chromium:215160
TEST=./server/autoserv -R -m <DUT ip> -r ~/tmp/repair
CQ-DEPEND=CL:221510

Change-Id: Ifd562bfd539b133381572aeec503d9a3940ab448
Reviewed-on: https://chromium-review.googlesource.com/219999
Reviewed-by: Fang Deng <fdeng@chromium.org>
Commit-Queue: Mungyung Ryu <mkryu@google.com>
Tested-by: Mungyung Ryu <mkryu@google.com>
/external/autotest/server/hosts/abstract_ssh.py
b890418d8fbd8d3fc21c2d6d9f0b3cb64d66f514 03-Jun-2014 David Hendricks <dhendrix@chromium.org> Add missing double quotes in _make_rsync_cmd

This puts "sources" and dest args in double quotes in case
they contain spaces.

BUG=chrome-os-partner:29335
TEST=firmware_CorruptBothFwBodyAB doesn't complain about
unexpected arg on Big
Signed-off-by: David Hendricks <dhendrix@chromium.org>

Change-Id: Icb1e3cbc9b254496c6d8517cfe5d5f8bffd44be2
Reviewed-on: https://chromium-review.googlesource.com/202431
Reviewed-by: Vic Yang <victoryang@chromium.org>
Commit-Queue: David Hendricks <dhendrix@chromium.org>
Tested-by: David Hendricks <dhendrix@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
04be2bd5e4666a5c253e9c30ab20555e04286032 08-May-2014 Ilja H. Friedel <ihf@chromium.org> Autotest: Change logging.warn() to logging.warning().

logging.warn() is deprecated. See
http://bugs.python.org/issue13235

Substitution was performed via
~/cros/src/third_party/autotest/files$ find ./ -type f | xargs sed -i 's/logging.warn(/logging.warning(/'

BUG=None.
TEST=There should be one-- and preferably only one --obvious way to do it.

Change-Id: Ie5665743121a49f7fbd5d1f47896a7c65e87e489
Reviewed-on: https://chromium-review.googlesource.com/198793
Commit-Queue: Ilja Friedel <ihf@chromium.org>
Tested-by: Ilja Friedel <ihf@chromium.org>
Reviewed-by: Alex Miller <milleral@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
98509c706a9601acf67a809b09a6c34ffadc5115 05-Apr-2014 Prashanth B <beeps@google.com> [autotest] Add collection of /var/log to the repair task.

Also refactors the function that handles log collection onto ssh_host
since several non-cros hosts use the same control segments.

TEST=Ran special tasks and collected logs.
BUG=chromium:354944

Change-Id: I88ba114c0e42682e69d7ce8dc544d70e61c02840
Reviewed-on: https://chromium-review.googlesource.com/193324
Tested-by: Prashanth B <beeps@chromium.org>
Reviewed-by: Fang Deng <fdeng@chromium.org>
Reviewed-by: Alex Miller <milleral@chromium.org>
Commit-Queue: Prashanth B <beeps@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
06d7fbf0ea126667707c0c78f04eca71d5e6121b 12-Feb-2014 Dan Shi <dshi@chromium.org> [autotest] Do not keep the ownership of files rsync to DUT

Add option --no-o --no-g to rsync option.

BUG=chromium:333114
TEST=test_that 172.22.14.6 dummy_Pass --board lumpy
verify owner and group of files in /usr/local/autotest/ are both root.

Change-Id: I45391b910b7968556ca45b48f94af2a5a5636280
Reviewed-on: https://chromium-review.googlesource.com/186152
Tested-by: Dan Shi <dshi@chromium.org>
Reviewed-by: Alex Miller <milleral@chromium.org>
Reviewed-by: Jorge Lucangeli Obes <jorgelo@chromium.org>
Commit-Queue: Dan Shi <dshi@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
46dadc9439355f72d394dcc4700902001bd797ff 07-Nov-2013 beeps <beeps@chromium.org> [autotest] Eureka host.

Creates a eureka host capable of verifying, cleanup, reboot
and machine_install. Also implements the following chagnes:
1. Pipes a base command through is_up, since different ssh
hosts are bound to have different things pre-installed.
2. Changes some timeouts to integers to avoid asserts.
3. Make host factory a little more generic, and check
for chromeos host first.
4. Adds a method to remote wget to server/site_utils.

TEST=Tried verify, cleanup, reoboot and machine_install.
BUG=chromium:292629, chromium:273843

Change-Id: I62a700614838569c6d77184b3c3339e914f4b456
Reviewed-on: https://chromium-review.googlesource.com/176303
Tested-by: Prashanth B <beeps@chromium.org>
Reviewed-by: Scott Zawalski <scottz@chromium.org>
Reviewed-by: Simran Basi <sbasi@chromium.org>
Commit-Queue: Prashanth B <beeps@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
882f15bde7b0deaaa166c680cf8753645587c35a 29-Oct-2013 Simran Basi <sbasi@chromium.org> Autotest: Add logging to copy to results repo logic

We have been only using 1 drone because of the email spam sent out
regarding copying to results repo. We want to try enabling multiple
drones so that the lab will not go down in the case one drone dies.

Copy_to_results_repository is now gated by the enale_archiving flag,
meaning it should not happen.

Added logging to SSHHost's get/send file methods that drone_utility
uses to send files to the results repo. Also added logging to the
drone_utility's send/get functions as well.

BUG=chromium:231452
TEST=Local setup with multiple drones. Ensure tests still run.

Change-Id: I62a0196880d4b25ff8abb47825e280d193a4b9b7
Reviewed-on: https://chromium-review.googlesource.com/175005
Reviewed-by: Simran Basi <sbasi@chromium.org>
Commit-Queue: Simran Basi <sbasi@chromium.org>
Tested-by: Simran Basi <sbasi@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
c86fdeb43bdf9cc2ec0b896e22e79d035087a23a 23-Oct-2013 Scott Zawalski <scottz@google.com> Change 'shutdown took longer than 30s' to INFO from WARN.

This has been happening for a long time and no one currently has the
bandwidth to investigate the problem. Downgrading the message to INFO
for the time being.

TEST=autoserv reboot test causing the INFO line to be added to a status
line.
BUG=chromium:305690

Change-Id: I477a5e85782fabaf59042a4d6f90eedfdbede8e4
Reviewed-on: https://chromium-review.googlesource.com/174281
Tested-by: Scott Zawalski <scottz@chromium.org>
Reviewed-by: Aviv Keshet <akeshet@chromium.org>
Reviewed-by: Scott Zawalski <scottz@chromium.org>
Commit-Queue: Scott Zawalski <scottz@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
0749a820f18d14fdf8657ce21dfd059e3a5b6034 17-Oct-2013 Aviv Keshet <akeshet@chromium.org> [autotest] fix a race condition in master-ssh startup

This fixes a race condition in master-ssh connection startup, between
the establishment of the connection (and creation of socket file) and
the first use of the connection. It accomplishes the fix by waiting up
to 5s for the socket file to appear, after launching the master-ssh
process, before returning from the master-ssh start function. If the
connection fails to be established within this time, a warning is logged
but no other action is taken, allowing the test to attempt to continue
to run.

BUG=chromium:305641
TEST=Ran some local test_that runs, which prior to this change had been
exhibiting a lot of "lost socket file" events in the logs. Saw these
events eliminted.

Change-Id: Ie8a45edf20adf1320a65201451ab7b64ac837dbb
Reviewed-on: https://chromium-review.googlesource.com/173560
Reviewed-by: Aviv Keshet <akeshet@chromium.org>
Tested-by: Aviv Keshet <akeshet@chromium.org>
Commit-Queue: David James <davidjames@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
31b9ec8dd07f5321ba7823420cb5ea7bea3acfd9 15-Oct-2013 Aviv Keshet <akeshet@chromium.org> [autotest] abstract.py: log system load before starting master-ssh

It is believed that builder load contributes to VMTest banner exchange
flake, which occurs almost exclusively during either master-ssh
connection establishment, or during the first ssh-ping after booting
a VM. This CL logs the system load right before each master-ssh
connection establishment.

BUG=chromium:254166
TEST=None

Change-Id: Ie6f203230ac90ae4b5e3b8dd5cc589c37f0d0beb
Reviewed-on: https://chromium-review.googlesource.com/172929
Reviewed-by: Aviv Keshet <akeshet@chromium.org>
Commit-Queue: Aviv Keshet <akeshet@chromium.org>
Tested-by: Aviv Keshet <akeshet@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
07f162429685417f491ff9b727e6ec37fd899c38 10-Oct-2013 Aviv Keshet <akeshet@chromium.org> [autotest] log master-ssh process `lsof` after unexpected death

This CL adds more detailed logging after unexpected master-ssh death, to
make it hopefully easier to solve The Case Of The Missing Socket File.

BUG=chromium:305641
TEST=None

Change-Id: I736232a6d79973445a846c39845df8459ea7350a
Reviewed-on: https://chromium-review.googlesource.com/172586
Reviewed-by: Aviv Keshet <akeshet@chromium.org>
Commit-Queue: Aviv Keshet <akeshet@chromium.org>
Tested-by: Aviv Keshet <akeshet@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
3ae1a5fcf9f0daf6b9fd08572b93dd4503e8beb3 09-Oct-2013 Aviv Keshet <akeshet@chromium.org> [autotest] increase the detail of master-ssh connection death log

In order to better understand our flaky unexpected-master-ssh-death,
(in which the master connection socket file goes missing before the
process dies), it might be helpful to know whether the file alone
goes missing, or both the file and its containing temporary directory
go missing.

BUG=chromium:305641
TEST=None

Change-Id: Ia6d99734779c5be3196446e1de0123f6558da29a
Reviewed-on: https://chromium-review.googlesource.com/172421
Reviewed-by: Aviv Keshet <akeshet@chromium.org>
Commit-Queue: Aviv Keshet <akeshet@chromium.org>
Tested-by: Aviv Keshet <akeshet@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
44c609eda04a22fec4a63b8a8ba496fe3914b5c5 06-Sep-2013 Aviv Keshet <akeshet@chromium.org> [autotest] log some master-ssh ps info if unexpected death was detected

Following up on a previous patch, log some debug information to help
understand unexpected master-ssh death.

BUG=None
TEST=None

Change-Id: I06a7b0f85af6652525a071f361328fcb2eec8ccd
Reviewed-on: https://chromium-review.googlesource.com/168407
Reviewed-by: Aviv Keshet <akeshet@chromium.org>
Tested-by: Aviv Keshet <akeshet@chromium.org>
Commit-Queue: Aviv Keshet <akeshet@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
982fde1cfb2df606e35048a28754d4fcb21a8673 06-Sep-2013 Aviv Keshet <akeshet@chromium.org> [autotest] add a logging warning about unexpected master-ssh death

A recent patch made abstract_ssh more aggressive about reviving
master-ssh connections, by detecting when their socket file was missing
even as the process kept running. This patch adds a logging warning so
we can know when that logic gets used.

BUG=None
TEST=None

Change-Id: I0ee26b080392e4f91de853975a062a443afa3c01
Reviewed-on: https://chromium-review.googlesource.com/168375
Tested-by: Aviv Keshet <akeshet@chromium.org>
Reviewed-by: Simran Basi <sbasi@chromium.org>
Commit-Queue: Aviv Keshet <akeshet@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
49b4ed0a99839ab2cf31cb1c05c0d0757ab80ab7 05-Sep-2013 Aviv Keshet <akeshet@chromium.org> [autotest] improve abstract_ssh's detection of a down master-ssh

If the master-ssh connection closes itself, it appears that it will
remove its ControlPath socket file. Based on the logs linked in the bug,
this can happen without abstract_ssh noticing.

This CL fixes that by checking for the existence of the ControlPath
socket file, in addition to the existing master_ssh_job.sp.poll() test.

BUG=chromium:286014
TEST=Tryjobs:
http://chromegw/i/chromiumos.tryserver/builders/lumpy-paladin/builds/1145
http://chromegw/i/chromiumos.tryserver/builders/mario-paladin/builds/2106

Change-Id: Ic6e6b83378b7f5aa3280bbae4c5946584cd69df6
Reviewed-on: https://chromium-review.googlesource.com/168302
Tested-by: Aviv Keshet <akeshet@chromium.org>
Reviewed-by: Alex Miller <milleral@chromium.org>
Commit-Queue: Aviv Keshet <akeshet@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
46250750c649237074dfada83582d743afd33cca 28-Aug-2013 Aviv Keshet <akeshet@chromium.org> [autotest] add a no_pipes argument to BgJob constructor

This CL introduces an alternative type of BgJob, to match the master-ssh
connection use case. The new type of BgJob is created by specifying
no_pipes=True when calling BgJob's constructor. BgJobs constructed in
this way do not expect to ever be joined with a join_bg_jobs call, and
do not interact via their stdout/stderr with other BgJobs.

This CL also causes the master ssh connection BgJob to be created with
this flag.

This CL only addresses flaw #2 in the "Problems with current semantics"
section of the referenced bug.

BUG=chromium:279312
TEST=Unit tests pass. Running an autoserv tests with ssh verbosity
turned up to 3 no longer causes a deadlock.

Change-Id: I1a6861501eb4fc8439add213c79eaa3777978df0
Reviewed-on: https://chromium-review.googlesource.com/167173
Reviewed-by: Aviv Keshet <akeshet@chromium.org>
Tested-by: Aviv Keshet <akeshet@chromium.org>
Commit-Queue: Aviv Keshet <akeshet@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
53a216a5ae9cf732330846e652dff8d0ad29bd2a 27-Aug-2013 Aviv Keshet <akeshet@chromium.org> [autotest] add a nickname parameter to BgJob

This CL adds an optional nickname parameter to BgJob. If provided, the
nickname is used in any logging messages that a BgJob sends to the
logging manager. The parameter is only specified by the
master-ssh-connection call to BgJob at the moment, but in a future CL
that will be extended to more BgJobs.

BUG=None
TEST=None

Change-Id: Iee7722b55cc5e7497888ee86154c3ddb3b7bdf6e
Reviewed-on: https://chromium-review.googlesource.com/167172
Reviewed-by: Aviv Keshet <akeshet@chromium.org>
Tested-by: Aviv Keshet <akeshet@chromium.org>
Commit-Queue: Aviv Keshet <akeshet@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
96667caad23538696f737100803e68a1c1ecf357 02-Aug-2013 Fang Deng <fdeng@chromium.org> [autotest] Refactor SiteHost, AbstractSSHHost, SSHHost hierarchy

This CL refactors the host classes inheriting hierarchy.
Previously, we have SiteHost as a parent class of AbstractSSHost.
This makes AbstractSSHHost/SSHHost chromeos-specific.
In the new hierarchy, SiteHost is made as a subclass of AbstractSSHHost.
This allows other types of host, such as ServoHost,
easily inherits from AbstractSSHHost/SSHHost, without unnecessarily
inheriting chromeos specific methods from SiteHost.

make_ssh_command is put inside host classes, which allows
each subclass of AbstractSSHHost to easily
override it with its own settings.

SiteHost are mixed with SSHHost or ParamikoHost in create_host.

For a thorough discussion about the refactoring design,
take a look at the design doc mentioned in crbug.com/265998.

CQ-DEPEND=CL:66136
BUG=chromium:265998
TEST=dummy and bvt suite pass locally; repair/verify jobs pass; vmtest
in a tryjob pass.
DEPLOY=scheduler

Change-Id: I03a63a3db2f3cb0eaa50884c53fe3d3f8bb779ed
Reviewed-on: https://gerrit.chromium.org/gerrit/64331
Reviewed-by: Fang Deng <fdeng@chromium.org>
Tested-by: Fang Deng <fdeng@chromium.org>
Commit-Queue: Fang Deng <fdeng@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
3af6620d9ccf007838d20fe1eee89b20447949a0 17-Aug-2013 Fang Deng <fdeng@chromium.org> [autotest] Pull a upstream fix about known hosts file failure.

Need to be landed/pushed before cl 64331. Pull a upstream fix.

The host_file got by os.tmpfile() is not available for "ssh -o
UserKnownHostsFile " on ubuntu 11.10 and will have the error "Failed to
add the host to the list of known hosts (/dev/fd/11)", so the patch just
replace it with tempfile.mkstemp()

The original idea of not using '/dev/null' is that using it will
lead to too many messages like 'Warning: Permanently added
'locathost' (RSA) to the list of known hosts'.

This fix is needed when SiteHost is no longer be the parent class of
AbstractHost after 64331 is landed.
Code that creates SSHHost directly without mixing it with
SiteHost will hit this problem.

BUG=None
Test=Manually create a SSHHost (without SiteHost being a parent),
run a command via |run| on the host. Make sure it can ssh to the host
and won't hit the error. Also run dummy suite locally.

Change-Id: Id8d5c44f63a572ea482afeae074cd43cf2de9ec9
Reviewed-on: https://gerrit.chromium.org/gerrit/66136
Reviewed-by: Richard Barnette <jrbarnette@chromium.org>
Tested-by: Fang Deng <fdeng@chromium.org>
Commit-Queue: Fang Deng <fdeng@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
6b05f5b1c50bee17a532b01643dc0a27a84c939d 20-Mar-2013 Fang Deng <fdeng@chromium.org> SiteHost.verify_software checks space in the encrypted stateful partition

BUG=chromium-os:219686
TEST=Test with a lumpy device in both cases where the space
requirement was met and was not.

Change-Id: I1a319ac334629cdf6655ea9402ea0851fcd7a8a0
Reviewed-on: https://gerrit.chromium.org/gerrit/46037
Reviewed-by: Richard Barnette <jrbarnette@chromium.org>
Tested-by: Fang Deng <fdeng@chromium.org>
Commit-Queue: Fang Deng <fdeng@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
add66d301d07eb4c4a9222b6208393df8c8013f3 05-Mar-2013 beeps <beeps@chromium.org> [Autotest] Modify wait_down to observe timeouts closely.

Certain tests like platform_HWwatchdog require close to real time
monitoring of when a device reboots. This change teaches the wait_down
function to observe such deadlines by passing the remaining time
till the deadline into get_boot_id. Prior to this wait_down had
a 'jitter' of close to 60 seconds, but now this jitter shouldn't
exceed one second, if at all. It is however far from being a
higher precision event timer for shutdown.

TEST=ran platform_HWwatchdog with an induced delay of ~29 seconds
and confirmed failure in the earlier case, then success using
the new version of wait_down.
BUG=chromium-os:38670

Change-Id: I971d2894f0d3863d98ffe32ca1762d3da92cb74e
Reviewed-on: https://gerrit.chromium.org/gerrit/44609
Reviewed-by: Scott Zawalski <scottz@chromium.org>
Commit-Queue: Prashanth Balasubramanian <beeps@chromium.org>
Tested-by: Prashanth Balasubramanian <beeps@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
567d0d9660acff00a802839f00231ac11275f079 19-Dec-2011 Chris Masone <cmasone@chromium.org> [autotest] Be tolerant of hanging symlinks while copying logs.

When copying logs back at the end of a test, sometimes we
run into hanging symlinks. We should skip these.

It's OK to modify this code such that we don't follow links to do
chmodding, because we just copied over all the files we're operating
on, and are now doing a bottom-up walk of all copied files. We'll hit
everything we need to hit because of that, and don't need to follow
links to get to files we might otherwise miss.

BUG=None
TEST=./server/autoserv test_suites/control.dummy

Change-Id: I6380732eb7741a3e446d296a84bc1dc741d102b6
Reviewed-on: https://gerrit.chromium.org/gerrit/13137
Tested-by: Chris Masone <cmasone@chromium.org>
Reviewed-by: Scott Zawalski <scottz@chromium.org>
Tested-by: Scott Zawalski <scottz@chromium.org>
Reviewed-by: Chris Sosa <sosa@chromium.org>
Commit-Ready: Chris Masone <cmasone@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
73353ba7e7a589d191fee2539293c3510a00fda7 13-Dec-2011 Chris Masone <cmasone@chromium.org> [autotest] Handle dangling symlinks copied over from DUT

Sometimes, there are dangling symlinks in /var/log on devices
We copy these over verbatim in some cases, but the code autotest
uses to set permissions on files cannot cope with said dangling
symlinks. Fix it so it is symlink savvy.

BUG=None
TEST=manual; create dangling symlink in /var/log on DUT and run a test. It should pass.

Change-Id: I15d48b93eed7fc8404e24a03dfbde6faa4ce0f50
Reviewed-on: https://gerrit.chromium.org/gerrit/12826
Commit-Ready: Chris Masone <cmasone@chromium.org>
Tested-by: Chris Masone <cmasone@chromium.org>
Reviewed-by: Chris Sosa <sosa@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
cb7bfaf79c567031a93da7390fed5d57b4c7da85 08-Jun-2011 Dale Curtis <dalecurtis@chromium.org> Reduce timeout conditions for Chrome OS for efficiency.

Many of the Autotest timeouts are far too long for Chrome OS. Where a
normal machine might take 10+ minutes to recover, Chromebooks take only
seconds. As such, I've tweaked many of the boot and crash timeouts to
reflect this.

When a host goes down the scheduler idles the job for four hours while
waiting for crash collection, causing two main problems:

1. Metahost jobs take four hours to requeue upon verify failure.
2. Results are delayed four hours when a host dies in jobs.

Additional issues fixed:

1. Timeout after reboot was essentially doubled in the default Host
implementation of wait_for_reboot. Works for us, but will need to query
upstream to ensure it works for everyone.
2. Unified timeouts across autotest.py and base_classes.py so boot
timeouts exist in only one place. Should be okay since all hosts extend
from Host in base_classes.py. Timings are now configurable in
global_config.
3. Global SSH options to ensure better timings. In order to do this, it
was necessary to add site extensibility to abstract_ssh.

Changes to crashcollect.py, autotest.py, abstract_ssh.py, and
base_classes.py will be upstreamed.

BUG=none
TEST=run_remote_tests. Will test in production as well.

Change-Id: I92964b140337e4ab919288b5190bb2e6d5a4fa2d
Reviewed-on: http://gerrit.chromium.org/gerrit/2269
Reviewed-by: Paul Pendlebury <pauldean@chromium.org>
Reviewed-by: Scott Zawalski <scottz@chromium.org>
Tested-by: Dale Curtis <dalecurtis@chromium.org>
/external/autotest/server/hosts/abstract_ssh.py
861b2d54aec24228cdb3895dbc40062cb40cb2ad 04-Feb-2011 Eric Li <ericli@chromium.org> Merge remote branch 'cros/upstream' into master

Merged to upstream autotest @4749~@5215.

The entire change list description is too big to enlist here. Please refer to upstream (http://autotest.kernel.org/browser) for more details.

BUG=
TEST=emerged both x86 and arm build.
Tested emerged x86 build bvt against a chromeos device.

Review URL: http://codereview.chromium.org/6246035

Change-Id: I8455f2135c87c321c6efc232e2869dc8f675395e
/external/autotest/server/hosts/abstract_ssh.py
bdaab795cffa33f9a37995bb283047cb03699272 07-Jan-2011 Kenneth Waters <kwaters@chromium.org> Revert "Merge remote branch 'cros/upstream' into autotest-rebase"

This reverts commit 7edb30498d75a29a3287fe07070f2b51a116c5d4.

TEST=Built for tegra2_seaboard
BUG=10756

Review URL: http://codereview.chromium.org/6124004

Change-Id: Ifcd1a2279f5a62b99552a8f961c1430889a3a928
/external/autotest/server/hosts/abstract_ssh.py
7edb30498d75a29a3287fe07070f2b51a116c5d4 07-Jan-2011 Eric Li <ericli@chromium.org> Merge remote branch 'cros/upstream' into autotest-rebase

Merged to upstream trunk@5066, from trunk@4749.

There is no way I could enlist each individual CL from the upstream here since it will blow up the changelist description field.

BUG=
TEST=
Had patched this CL into a fresh cut client to avoid any side effect.
run_remote_test bvt from both emerged location and third_party/autotest/file.

Both test passed!

We should also keep any eye on this to see how it gets propagated into cautotest server.
TBR=dalecurtis

Change-Id: I72f2bc7a9de530178484aea1bfb5ace68bcad029
/external/autotest/server/hosts/abstract_ssh.py
e0493a4af57c1a73376a7bafaed542c01f588196 15-Nov-2010 Eric Li <ericli@chromium.org> Merge remote branch 'cros/upstream' into tempbranch

BUG=
TEST=

Review URL: http://codereview.chromium.org/4823005

Change-Id: I5d56f1c10d0fce7f9d7dc3ad727ea52dcb9b2d6c
/external/autotest/server/hosts/abstract_ssh.py
7ebac3d5f6b09346e2e9a14a6598ed5481922861 17-Jun-2010 jadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4> Add some debug logging to the Host.wait_up method.

Signed-off-by: John Admanski <jadmanski@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@4631 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
e5e3cf22e2e3a04746bbe601f4f8423dc2c96d8f 28-May-2010 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> get_boot_id to return None when not supported by the kernel.

Signed-off-by: Josh Gilkerson <jwg@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@4566 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
0a88370f238341e1a4061b1306e34c7f1c3335b3 21-Apr-2010 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Add the ability to clear out known hosts file for a specific host, and
for all hosts in a job.

This is useful when we reinstall the machine to reduce the "REMOTE HOST
IDENTIFICATION HAS CHANGED" spam warnings.

Signed-off-by: Girts Folkmanis <girts@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@4435 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
b86bfa15d38617c1fed68a1a5bc384e24b350c3d 12-Feb-2010 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Move AUTOTEST_GB_DISKSPACE_REQUIRED to global.ini file

From: kdlucas@google.com



git-svn-id: http://test.kernel.org/svn/autotest/trunk@4244 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
af676f3da9c59354c1b4ef60edd144c7ab155d5b 04-Feb-2010 lmr <lmr@592f7852-d20e-0410-864c-8624ca9c26a4> abstract_ssh.py: Write known hosts to temp filedescriptor

Implementing the approach suggested by Jongki Suwandi to
resolve the multiple messages like:

[stderr] Warning: Permanently added '192.168.122.99' (RSA) to the list of known hosts.

By redirecting them to a filedescriptor of a temporary
file, once an abstract ssh instance finishes, the file
is unlinked, so we get rid of all fingerprint registers.

This way we're able to drop the -q flag to the base ssh
command, and we have only one message like the above per
autoserv execution.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@4207 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
5644c1269c240afaf84be4256ae0aeb0a0f1604a 29-Jan-2010 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> git-svn-id: http://test.kernel.org/svn/autotest/trunk@4178 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
91afdc212f3a2f0220dbb60ecc69295933c3ea4e 26-Jan-2010 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> This is a follow up patch to abstract_ssh.py, which used to supress the
message "Warning: Permanently added 'XX.XX.XX.XX' (RSA) to the list of
known hosts." Since now the known_host file is pointing to /dev/null, it
will popup multiple times during one test run. Quite annoy.

I believe this change should have very little impact to existing autotest
users.

From: ericli@goole.com



git-svn-id: http://test.kernel.org/svn/autotest/trunk@4171 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
dbc7e4a9e85901a860f81c9c3db9b7b725169990 15-Jan-2010 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Catch (and ignore) more errors when waiting for a machine to reboot.

Signed-off-by: Josh Gilkerson <jwg@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@4133 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
6eafb4906e344bf94f1c63286311024a84acf6bb 15-Jan-2010 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Fix bug introduced into paramiko_host by recent changes to selectively disable rsync support (SVN rev 4077). The new code makes SSH calls within _initialize(), but paramiko_host wasn't sufficiently initialized when the call was being made. In general, executing remote commands within _initialize() is dangerous. This change removes the new code from _initialize() and instead makes AbstractSSHHost compute the new information lazily.

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@4131 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
c0649d63ce6f1b51f003f4bd3f59eff4358802b5 15-Jan-2010 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Add -o UserKnownHostsFile=/dev/null -o BatchMode=yes to ssh commands

Signed-off-by: Martin J. Bligh <mbligh@google.com>
From: ericli@google.com



git-svn-id: http://test.kernel.org/svn/autotest/trunk@4124 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
c035491ba24efea9e4343982f0a7c4b92e0a8c72 12-Jan-2010 jadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4> Adds support to wait_down and wait_for_restart to watch for changed
boot_id values (using /proc/sys/kernel/random/boot_id). This avoids a
race condition where if a machine was able to successfully shutdown
and boot up again after you started a reboot and before we started
polling for the shutdown, it would just appear that the machine
failed to shutdown when told.

As a result the Host.wait_down method now treats the case where a
machine is NOT down but has a new boot_id as being "down", because
this implies that the machine did shut down (and subsequently came
back up). This does mean that you cannot assume that a successful
wait_down implies that the machine is now down, but that was never
true anyway.

Risk: High
Visibility: We can now reliably detect the restart of machines with
very fast restart times.

Signed-off-by: John Admanski <jadmanski@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@4096 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
efccc1b442f5dfa885c9c81bab2daa25d0c134f5 11-Jan-2010 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Whenever a new SSH connection is initiated to an SSH host (run, send_file,
get_file), try to start and use a shared master SSH connection. If master-SSH
support is enabled through the global_config enable_master_ssh variable, a
master SSH connection is initiated as a background job by start_master_ssh.

From: petkov@chromium.org



git-svn-id: http://test.kernel.org/svn/autotest/trunk@4087 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
c9892c0c96297027036cc97d336206d0412ddd3c 06-Jan-2010 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Thanks, here's a new patch that includes the hostname in the
rsync-is-disabled log. I thought about doing that initially but then somehow
I missed it.

Darin

On Tue, Jan 5, 2010 at 2:50 PM, John Admanski <jadmanski@google.com> wrote:

> Looks good overall.
>
> On the rsync-is-disabled warning log, I would include the hostname in the
> message.
>
> -- John
>
> On Tue, Jan 5, 2010 at 2:02 PM, Darin Petkov <petkov@google.com> wrote:
>
>> Agreed.
>>
>> Attached is an updated patch.
>>
>> Darin
>>
>>
>> On Tue, Jan 5, 2010 at 12:50 PM, John Admanski <jadmanski@google.com>wrote:
>>
>>> I like less invasive changes, but only up to a point. I just think having
>>> the command generator "turn off" rsync by changing the command to false is a
>>> very un-obvious; I had to think about it for a while before I could convince
>>> myself it was doing the right thing, and I already understand how the copy
>>> method in abstract_ssh.py work.
>>>
>>> -- John
>>>
>>>
>>> On Tue, Jan 5, 2010 at 11:13 AM, Darin Petkov <petkov@google.com> wrote:
>>>
>>>> I thought less invasive changes would be appreciated. No problem, I'll
>>>> fix so that we don't try rsync at all and resend the patch.
>>>>
>>>> Darin
>>>>
>>>>
>>>> On Tue, Jan 5, 2010 at 11:05 AM, John Admanski <jadmanski@google.com>wrote:
>>>>
>>>>> I think disabling rsync by having the make command method return
>>>>> "false" a bit of hack, though. I think it would be cleaner to just make the
>>>>> rsync attempt conditional somehow.
>>>>>
>>>>> On Tue, Jan 5, 2010 at 10:35 AM, Darin Petkov <petkov@google.com>wrote:
>>>>>
>>>>>> Check if rsync is executable on each newly instantiated remote SSH
>>>>>> host.
>>>>>> If it's not, rsync is disabled for future file transfers and scp is
>>>>>> used instead.
>>>>>> If it is, warning messages are logged whenever an rsync-based transfer
>>>>>> fails.
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Autotest mailing list
>>>>>> Autotest@test.kernel.org
>>>>>> http://test.kernel.org/cgi-bin/mailman/listinfo/autotest
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
>From 3dca5891ae7da5934a7679f1f3135fe145f2acd5 Mon Sep 17 00:00:00 2001
From: Darin Petkov <petkov@chromium.org>
Date: Tue, 5 Jan 2010 10:24:10 -0800
Subject: [PATCH] Disable rsync if it's not available on the remote host.

Check if rsync is executable on each newly instantiated remote SSH host.
If it's not, rsync is disabled for future file transfers and scp is used
instead.
If it is, warning messages are logged whenever an rsync-based transfer fails.


git-svn-id: http://test.kernel.org/svn/autotest/trunk@4077 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
e863384bf392d8a1b7326adc60483f4eacf7ab85 29-Dec-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> The warning message when rsync fails back to scp is unnecessary, and
very polluting of the screen and logs when you work with systems without
rsync installed. Just drop the warning

Signed-off-by: Martin J. Bligh <mbligh@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@4058 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
bc9402bd8f823169e0c47db62047ca0de694b6d9 29-Dec-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Fix comments in abstract_ssh.py per CODING_STYLE

Signed-off-by: Martin J. Bligh <mbligh@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@4057 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
29e158495ba845d250e38841a32b47a7bea08b66 23-Dec-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Remove -p flag from autoserv scp

When the test logs were scped out, the permission
bit was reset to --r--r--r, which caused the second scp (overwrite) to fail.



git-svn-id: http://test.kernel.org/svn/autotest/trunk@4050 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
1a4305c757ebe2d77999f9ec7401bab0c31261aa 19-Dec-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Remove the chmod+chown done by Host.send_file at the end of a copy.
It's generally unnecessary, and often wrong because it often tries to
chmod a lot more than the copied files.

Risk: Medium
Visibility: The dest given to Host.send_file will no longer be
automatically made world-readable-executable.

Signed-off-by: John Admanski <jadmanski@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@4033 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
39986a63d977721c5c202448728ec2b35a1dcb7d 10-Dec-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Add prefixes [stdout] and [stderr] to logged output of subcommands, by default. This applies both to local commands (utils.run() and friends) and remote commands (SSHHost.run(), ParamikoHost.run()) Also removed a little dead code from abstract_ssh.py.

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@4011 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
56176ec82ae2cbabaaff6818f84807a61c170d8b 28-Oct-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Fix the SCP fallback path in AbstractSSHHost.get_file(). We were passing the globbing paths to utils.scp_remote_escape(), which would then helpfully escape the globbing characters, making them useless. This avoids that by escape the path earlier, then attaching the globbing pattern, and then avoiding the later escape. I also had to change the "ls" glob check to put the globbing pattern outside the quotes, since ls will otherwise treat the globbing pattern as a literal (whereas scp won't).

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3884 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
ad812bf3cf46bd9da1871401042b2b0abf1a4220 21-Oct-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Cleanups to code controlling where Autotest clients get installed and used by Autoserv.

* change autotest._get_autodir() back to looking for the autotest client executable, document explicitly that it's looking for an existing autotest installation, give it a unique exception to raise upon failure, and make it a public classmethod of the Autotest class. also renamed it to get_installed_autodir() to be even more explicit about what it's doing.
* change _get_install_dir() to look through client_autodir_paths for the first one it can create (if no existing installation exists), rather than just hardcoding the default to /usr/local/autotest. also make it a public classmethod.
* make verify_software_only() use get_install_dir() rather than get_installed_autodir(), since i think that makes more sense for what it's doing.

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3872 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
ca57298a7986498abb1ad0ae75edd3677a096c11 18-Sep-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> reorganize verify_*() methods a bit. they were making some odd super() calls that didn't look right. this removes that, adds a verify_connectivity() method between HW and SW, and puts the master control flow in the base class. also add a logging call to a dangerous blanket try-except.

Signed-off-by: Steve Howard <showard@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@3751 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
2ba7ab0e20e9308edf5011a192e96eb79e2d59ff 25-Aug-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Make the INFO 'Host (ssh) foo is alive" messages much less spammy,
today there are 10s of these that appear in the INFO console logs when
running any sort of autoserv command.

Only show it on the actual intentional "Ping" done in verify().

Signed-off-by: Gregory Smith <gps@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3610 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
5a0ca53d55c6353797a03d31abec915ca8fc1a18 03-Aug-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> * Fix send_file() for delete_dest=True case when it is a dir to avoid:
/usr/bin/ssh -a -x -o BatchMode=yes -o ConnectTimeout=30 -o
ServerAliveInterval=300 -l root -p 22 rval20 " rm -rf
root@rval20:\/tmp/sysinfo/autoserv-4dw490\ && mkdir
root@rval20:\/tmp/sysinfo/autoserv-4dw490\"

Signed-off-by: JP Abgrall <jpa@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3479 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
27160153b500c474de77250c2aa2725cad9a109f 15-Jul-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Fix two apparent bugs in abstract_ssh.py:

1) In send_file(), for delete_dest when falling back to scp, we check if the destination directory exists using ls. But it uses remote_dest, which looks like "showard@myhost:/foo/bar". So on the remote host (myhost here), it runs "ls -d showard@myhost:/foo/bar", which will of course fail. I believe it's supposed to use dest instead of remote_dest. This has been present since the introduction of this code, 12/2008.

2) _encode_remote_paths was calling utils.scp_remote_escape() to escape paths, but then using the original, unmodified paths instead. this has been present since 2/2009.

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3417 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
d0e94981f3771ec95821358bee9d27fda7378288 11-Jul-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Server side messages cleanup. In this patch, the aim was:

* Fix issues with spacing on some messages
* Make server output coherent with client output
* Remove verbosity turned obsolete by the logging system
(it's not necessary to manually prepend debug messages with the method they
belong to)

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3398 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
108d73e490e104a367bfa0d29a01e17b0c7a8f48 22-Jun-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> * make utils.system* default to directing output to the logging module, instead of sys.std*. this involved refactoring the code out of ssh_host/paramiko_host/abstrash_ssh, which previously did the same thing (they still do, but now the use the common logic in utils)
* change packages.py to suppress command output properly. it was using the verbose option previously, which was added to ssh_host.run() and paramiko_host.run() specifically for this call site. in this context, verbose=False meant "dont print the command and dont print the output either). but this doesn't make the interface of utils.run(), for which verbose=False just means "dont print the command", because utils.run() suppresses output by default (while *host.run() doesn't). to resolve that, i made verbose on *host.run() match the interface of utils.run(), and i made packages.py suppress the output properly by passing stdout_tee=None.
* move tee.flush() calls in utils.BgJob code to where it makes more sense (and interacts with LoggingFiles better)

Signed-off-by: Steve Howard <showard@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3307 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
f1175bb2edbe3215f4bfa117c6b93d2e090d1d07 17-Jun-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> get rid of some now-obsolete code
* client.common_lib.debug
* abstract_ssh.LoggerFile

Changed {SSHHost,ParamikoHost}.run() default args for std{out,err}_tee to a constant instead of None. This preserves the existing behavior (teeing to the logging module by default), but allows callers to explicitly avoid this teeing if desired, by passing stdout_tee=None.

Signed-off-by: Steve Howard <showard@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@3293 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
10eb466b589f4ceab8d3fe24e647cd7950fb585b 17-Jun-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Remove output from packages.checksum echo. This is an interim step to cleaning up verbose logs in general

Signed-off-by: Scott Zawalski <scottz@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3290 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
c971c5f48255e9a016fb86fbb902ca210dcc2915 08-Jun-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Added specific exceptions for various failures in verify and changed the
code that raised them to use these new exceptions. Completely reworked
the 3 repair phases to try to fix things by handling the specific errors
generated by verify (in a loop where it exits either by not being able
to fix an issue or if the last verify ran successfully). Reorganized
some code to support this new way to repair hosts.

The code tries to remember each repair handler it used to catch the case
where even after executing the handler the same verify failure is
reported and it may execute the repair handler in an infinite loop.
When it finds out that the same repair handler has already been executed
it will re-raise the original exception hoping it will be cought in
surrounding try/except contexts or the exception will make repair fail.

Signed-off-by: Mihai Rusu <dizzy@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3217 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
4556178ac97dc6160a31ac105f5d987b6c9933d8 11-May-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Added utils.get_relative_path() to compute the path of an absolute path
as relative to a given directory path and used it when creating the
test results sysinfo/current_reboot symlink to create a relative symlink
that would still be valid when relocated.

Added a "preserve_symlinks" default False keyword argument to
AbstractSSHHost.get_file/send_file to tell rsync to try to preserve the
original symlink and not transform them into the referenced
file/directory when copied (only for rsync as scp has no way to do
this). Used the new flag when fetching the test result directory to
preserve symlinks. Along with the previous change this should fix an
issue of >100k sysinfo bloat because of duplicated content instead of
preserving the client symlink.

Signed-off-by: Mihai Rusu <dizzy@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3104 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
feac010c5bce042c7f6b887288d1a9d2f75f25dd 28-Apr-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Added support to AbstractSSHHost.get_file() to not try to preserve the
orginal file permissions. Used this from crashinfo copying code to not
copy /var/log/messasges with 0600 privileges and such (which is common
on Linux distributions) and then not be able to read it in the frontend.
Also changed the way we copy the client control file wrapper to not
preserve the original permissions of the file.

Signed-off-by: Mihai Rusu <dizzy@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3048 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
a4464405da15e87f3b4de254fbe1f1b3e58a63d3 17-Apr-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Add a workaround to a bug where machines are not rebooting sometimes
This sends a -HUP to init (pid 1) which causes it to reparse its config and nothing else.

Signed-off-by: Scott Zawalski <scottz@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3002 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
2ed998fc52af03c5929c37335651bacb06bb2989 08-Apr-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Add an optional warning in case the system doesn't shutdown in a
timely manner.

Signed-off-by: Jean-Marc Eurin <jmeurin@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@2975 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
a10c660ab0509633f95ac37224b107f7daa31261 01-Apr-2009 jadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4> Add a (global) timeout to rsync so that if it sits idle (i.e. no I/O)
for more than 30 minutes then the command will timeout and fail.

Risk: Low
Visibility: Adds a global idle timeout to rsync.

Signed-off-by: John Admanski <jadmanski@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2952 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
b18134f8faa7c5b4623760bc88650a65e70b2cac 20-Mar-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> As discussed on the mailing list, we implemented logging with a single
root logger and logging configurations per entry points. The entry
points affected are:

* Autotest client
* Autoserv
* Scheduler

We are sending patches for each one of those entry points. Now we don't
need to 'grab' loggers anymore to log messages, only need to use the
utility functions:

logging.info('msg')
logging.debug('msg')
logging.warning('msg')
logging.error('msg')
logging.critical('msg')

Which reduces complexity of the log system, and makes it easier for
developers to log messages, just select the level, make sure the
standard logging module is loaded, and profit!

From: Lucas Meneghel Rodrigues <lmr@linux.vnet.ibm.com>
Signed-off-by: Steve Howard <showard@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2915 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
9d738d6db3b900f509c8c94581da9062819928dc 09-Mar-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Moved server.hosts.ssh_host.PermissionDeniedError into
client.common_lib.error.AutoservSsshPermissionDeniedError and updated
users. Changed parsing of 'Permission denied.' SSH error to work in
verbose mode too. Changed AbstractSSHHost.ssh_ping() to not convert the
permission denied error to a AutoservRunError and instead let it
propagate to the callers (it is inherited from AutoservRunError
anyways).

Signed-off-by: Mihai Rusu <dizzy@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2857 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
b49b5239c67b24d03b87962441b125659673f986 12-Feb-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Ensure we run ssh_ping before trying sofware verification on the
machine that requires ssh, so that we don't get obscure error messages
when the host is down.

To do this, we want to run all the site h/w verification stuff first,
then generic ssh pings, then site s/w stuff, so I broke this into
two functions

Signed-off-by: Martin Bligh <mbligh@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2788 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
2583a43037ffe29d5d7fa3bf4281e8378c13c453 11-Feb-2009 jadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4> Fix up the handling of remote paths when sending files to and from
machines via rsync/scp. It changes multi-source gets to produce a
single remote source path (e.g. user@host:"$PATH1 $PATH2 ...") and
fixes up the scp command generation to properly encode remote paths
with a remote machine.

Risk: Medium
Visbility: Fixes up a lot of cases where remote file copying just
didn't work.

Signed-off-by: John Admanski <jadmanski@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2769 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
e8b93affebe4b0565d83d116cf79315ceb7b8e6f 30-Jan-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Modified AbstractSSHHost to use utils.import_site_class() to get
SiteHost instead of directly importing the file thus not requiring the
file to exist.

After this is committed it should be possible to remove the dummy
server/hosts/site_host.py from SVN.

Signed-off-by: Mihai Rusu <dizzy@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2711 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
a0a27597f8756408e895578ab8babf21351a3078 24-Jan-2009 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Moved in the inheritance tree repair_* from abstract_ssh to Host base class.

WARNING: this change may break compatibility with existent site_host.repair_*
overrides if they depend on the AbstractSSHHost moved repair_* functions to run
before the site_host.repair_* ones. If so the site_host.repair_* functions
should be changed to call the super().repair_* at the end of them.

Signed-off-by: Mihai Rusu <dizzy@google.com>




git-svn-id: http://test.kernel.org/svn/autotest/trunk@2685 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
80deb75dcb27024be43f4361d463656803c137b0 21-Jan-2009 jadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4> Add a Host.is_shutting_down method to allow us to determine if a host
is in the process of shutting down, and add code to verify to fail
if the machine is in this state. Also adds some extra code to the
repair (filesystem only) that will try and wait for the machine to
restart if it is in this state.

This should prevent jobs from running on machines that are shutting
down; such jobs tend to spontaneously abort when a machine
"mysteriously" restarts partway through.

Risk: Low
Visibility: Machines that are shutting down should no longer pass a
verify.

Signed-off-by: John Admanski <jadmanski@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2662 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
fcc851bf4a4c48e324a3d4f584f8434a7572a699 07-Jan-2009 jadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4> The LoggerFile class used by the ssh host classes as a default std*
stream outputs a lot of whitespace junk. Add some filtering to
discard empty write() calls and to strip off trailing newlines.

Risk: Low
Visibility: Removes a lot of noise from the host logging.

Signed-off-by: John Admanski <jadmanski@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2606 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
d7b79ed0cac32ef9af4ae71d9b3d42288c0311a4 07-Jan-2009 jadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4> Rewrite the get_file and send_file code in AbstractSSHHost to properly
support rsync-style trailing slash paths.

Currently, the interface claims to support this but in order to
provide support for working with rsync and scp the functions map
trailing slash paths like path/ to path/*. Unfortunately this isn't
quite the same - it misses dotfiles.

This rewrite changes this rather dramatically; it discards the
approach of doing the same thing with both rsync and scp. For rsync
it now just uses trailing slashes directly, and then if you need to
fall back to scp it replaces the path with the appropriate glob
patterns (which requires some work to determine which ones are
usable).

Risk: High
Visibility: get_file and send_file using trailing-slash source
directories should now work properly (i.e the same as rsync).

Signed-off-by: John Admanski <jadmanski@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2605 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
170873e8869cae8bb9499d6128cf626e8110bf56 07-Jan-2009 showard <showard@592f7852-d20e-0410-864c-8624ca9c26a4> Attached is a very large patch that adds support for running a
distributed Autotest service. Previously, the scheduler could only
execute autoservs locally and all results were written directly to the
local filesystem. This placed a limit on the number of machines that
could be concurrently tested by a single Autotest service instance due
to the strain of running many autoserv processes on a single machine.

With this change, the scheduler can spread autoserv processes among a
number of machines and gather all results to a single results
repository machine. This allows vastly improved scalability for a
single Autotest service instance. See
http://autotest.kernel.org/wiki/DistributedServerSetup for more
details.

Note that the single-server setup is still supported and the global
configuration defaults to this setup, so existing service instances
should continue to run.

Steve

Signed-off-by: Steve Howard <showard@google.com>




git-svn-id: http://test.kernel.org/svn/autotest/trunk@2596 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
7d22381e0c4638a3b2555b54383662f7371bcd24 08-Dec-2008 jadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4> Fix up the _copy_files implementation to properly handle deleting a
destination directory when doing a remote -> local copy.

Risk: Medium
Visibility: scp copies with delete_dest=True and a local destintion
should no loger generate an IndexError.

Signed-off-by: John Admanski <jadmanski@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2550 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
5f66ed427923dfa9f9fd6b35d52ad25bd88a0f27 24-Nov-2008 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Print clearer information about diskspace checks.

Signed-off-by: Martin Bligh <mbligh@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2503 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
aedfcbceb8213dfbe384452a918f73430f08c038 29-Oct-2008 jadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4> Remove the kerberos disabling options. It seems that some people do
need kerberos for authentication, and with these options in the
command line you can't really override them to turn it back on.
Instead we should use the ssh config to disable it if we need to.

Risk: Low
Visibility: Kerberos should work again.

Signed-off-by: John Admanski <jadmanski@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2351 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
31c49b77bc278cb93c751ecf15da5244a34aedc2 27-Oct-2008 jadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4> If we're disabling kerberos with ssh, we should do the same with scp.

Risk: Low
Visibility: Disable kerberos in scp-based ssh as well

Signed-off-by: John Admanski <jadmanski@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2344 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
6369cf20d9c4619c0e1a88464b87585b3a2b8b78 24-Oct-2008 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Abstract out self.ip into abstract_ssh so that paramiko has it available also
Some tests require this and it seems natural to pull it into abstract_ssh
Risk: High, Tests that reference .ip fail very quietly
Visibilty: Low, sync tests are affected for the most part

Signed-off-by: Scott Zawalski <scottz@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2333 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
89e258d442be542143b1c79fcd5a990bde701f34 24-Oct-2008 mbligh <mbligh@592f7852-d20e-0410-864c-8624ca9c26a4> Add an option to the Host send_file and get_file methods to indicate
that whatever is at the destination should be deleted. For
AbstractSSHHost this means using --delete (for rsync) or just
pre-emptively deleting the destination directory (for scp).

The option defaults to False (the old behavour) but this changes the
autotest install to set it to True, so that we can be sure that old
.pyc* and abandoned .py files are never left on the client. This also
allows me to remove some of the "remove stale files" hacks from the
setup_modules code.

Risk: Medium
Visibility: Adds a new option to *_file methods on Host objects and
kills stale files during Autotest client installs.

Signed-off-by: John Admanski <jadmanski@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2332 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
d9365e57553732ea0e73ac8f5e47d1435902cff9 22-Oct-2008 jadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4> Disable kerberos-based authentication for ssh; it seems there are some
performance issues with this and it doesn't generally seem to be
used for Autotest, so just turn it off.

Risk: High (it technically breaks stuff)
Visibility: No more kerberos for Autotest ssh.

Signed-off-by: John Admanski <jadmanski@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2323 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
0f80bf57db0c381146b90d5560a3fd25165046d5 22-Oct-2008 jadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4> Somehow the utils.run in AbstractSSHHost._copy_files that's used to
actually do an scp copy got dropped. Adding it back...

Risk: Low
Visibility: The scp-based copy should work again.

Signed-off-by: John Admanski <jadmanski@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2322 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
f656291cb000a62783f9deaf17cd31e4cb7b9b68 21-Oct-2008 jadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4> Furthur refactoring of the paramiko and ssh host classes. This covers a few
different fixes:
- it pulls the verify & repair code out of SSHHost and into AbstractSSHHost
- it moves all the __init__ code into _initialize methods; there's certain pieces of code (like self.start_loggers()) that always needs to run after all the other initialization, so it's easier to enforce this kind of ordering if we put the core initialization in a separate method and then just have one __init__ method in Host that enforces the ordering
- fixes up ParamikoHost to properly handle forking, since after a fork() one of the processes needs to switch to a new Transport object (both processes can't use the same connection)

Risk: High
Visibility: ParamikoHost now supports fork() properly, provides the same verify & repair as SSHHost, and most of the host __init__ code has migrated into _initialize methods

Signed-off-by: John Admanski <jadmanski@google.com>




git-svn-id: http://test.kernel.org/svn/autotest/trunk@2318 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py
ca7da37fd4346d8944ca2e94c5b629d00c0cd102 21-Oct-2008 jadmanski <jadmanski@592f7852-d20e-0410-864c-8624ca9c26a4> Adds a new host object, ParamikoHost, basically as another
implementation of SSHHost but one that uses an in-process SSH
library (in this case paramiko) instead of spawning ssh processes.

In order to reuse SSHHost code where I could, I pulled
pretty much all of the code that wasn't Host.run into a generic
AbstractSSHHost class; this is where the send_file and get_file
methods are implemented, as well as the wait_* methods. So now
both SSHHost and ParamikoHost are subclasses of AbstractSSHHost.

Currently, this new ParamikoHost class isn't hooked into anything,
so unless you explicitly use it you don't need to hava paramiko
installed.

Risk: Medium
Visibility: File copying and wait_* methods were moved out of SSHHost,
and you now have ParamikoHost available.

Signed-off-by: John Admanski <jadmanski@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2314 592f7852-d20e-0410-864c-8624ca9c26a4
/external/autotest/server/hosts/abstract_ssh.py