Commit Graph

53 Commits

Author SHA1 Message Date
Warren Usui
8bed6ab625 FIx mktemp dir and redundant Paramiko connecting.
Use previously initialized connection for sftp_get calls.
Use local directory for tarball temp file location.
2014-05-06 14:59:52 -05:00
Warren Usui
36b07b8aee Use SFTPClienti get for long reads/writes
Modified remote.py to use the paramiko SFTPClient get
method to extract long files (mostly tar files) from
the remote host.  The code formerly saved the data
in a long local string which was very inefficient.

Fixes: 8261
Signed-off-by: Warren Usui <warren.usui@inktank.com>
2014-05-06 14:59:52 -05:00
Zack Cerza
091d1fe48d Revert "Revert "Clean up remote.py and misc.py changes.""
This reverts commit 02504c3fd2.
2014-05-06 14:59:52 -05:00
Zack Cerza
0268487057 Revert "Revert "Handle raw data I/O.""
This reverts commit 0c8a3e2334.
2014-05-06 14:59:51 -05:00
Zack Cerza
0c8a3e2334 Revert "Handle raw data I/O."
This reverts commit 257e1459fa.
2014-05-05 10:03:29 -05:00
Zack Cerza
02504c3fd2 Revert "Clean up remote.py and misc.py changes."
This reverts commit 74eff43ee1.
2014-05-05 10:03:18 -05:00
Warren Usui
74eff43ee1 Clean up remote.py and misc.py changes.
Fixed method names to be non-redundant (remote_mktemp in remote is
now just mktemp, for example), and made some parameters be more
self descriptive.  Added some docstrings.  Fixed sudo setting in
get_file method.

Made chmod independent of the actual sftp file getting.
Do not do extra file copy if non-sudo read is needed.
Fixed some parameter names. Made sure temp files are removed.
2014-04-29 16:14:11 -05:00
Warren Usui
257e1459fa Handle raw data I/O.
Paramiko 1.13.0 checks data in the Channel and fails if
invalid UTF-8 characters are sent.  The teuthology/misc.py
functions that piped cat output (get_file) and piped tar
output (pull_directory and pull_directory_tarball) formerly
did not work for Paramiko 1.13.0.

Code was changed to use SFTPClient to copy raw data.  The
remote_mktemp and function was changed to be a method of the
remote object.  Remote object methods to copy files and write
tar files were also added.

In misc.py, get_file() was changed to be a wrapper around the
remote object call.  Pull_directory() and pull_directory_tarball
were changed to use the remote object methods as well.

The remote methods used to send the data makes use of the
SFTPClient interface in Paramiko.

The remote_mktemp function was also modified slightly to insure
that new-lines do not appear in temp file names.

Fixes: 8116
Signed-off-by: Warren Usui <warren.usui@inktank.com>
2014-04-29 16:14:11 -05:00
Zack Cerza
5de353e73f Update unit test for Cluster.__repr__()
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2014-04-25 15:01:41 -05:00
Zack Cerza
e6e287446a Fix Cluster.__repr__()
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2014-04-25 11:36:43 -05:00
Zack Cerza
b4205caedf Iterate more sensibly over processes
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2014-03-08 07:58:13 -06:00
Zack Cerza
7604a1b670 Update safe_while users to reflect new defaults
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2014-03-07 13:36:35 -06:00
Zack Cerza
081a5c4bf9 Look for ready() in the right place
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2014-03-07 13:03:58 -06:00
Zack Cerza
0be5f1f015 Introduce a timeout to radosbench's join phase
Set to 15min right now.

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2014-03-07 11:21:31 -06:00
Zack Cerza
5411613599 Add debug output for reconnect() failures
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2014-02-21 10:18:41 -06:00
Zack Cerza
aecd98d763 Fix incorrect exception name in docstring
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2014-02-20 17:46:09 -06:00
Zack Cerza
1a0be5a0ab Tweaks to is_online and reconnect()
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2014-02-20 17:46:07 -06:00
Zack Cerza
297096b560 Add Remote.reconnect()
Also rename Remote._connect() to Remote.connect() and change its
semantics to match Remote.reconnect()

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2014-02-20 17:46:07 -06:00
Zack Cerza
8dfac4381c Make Remote.is_online more accurate
To really know if the connection is active, we need to read something
from the remote host.

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2014-02-20 17:46:07 -06:00
Zack Cerza
71b4bfe226 Remote instances can now establish SSH connections
Previously, they required an active ssh connection object to be passed
to them. That behavior is still functional.

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2014-02-20 17:46:07 -06:00
Zack Cerza
1c71558e53 Add Remote.is_online property
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2014-02-20 17:46:07 -06:00
Zack Cerza
a2a5aed49f Add Remote.hostname property
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2014-02-20 17:46:07 -06:00
Zack Cerza
ed512568f0 Fix linter errors.
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2014-02-20 17:46:05 -06:00
Warren Usui
f3ac7870ea Fix syntax error in first docstring added. 2014-02-19 13:37:06 -08:00
Warren Usui
e0ed09cfa9 Add docstrings to the orchestra code. Also fix minor formatting issues
(mostly column start locations).

Fixes: 7003
Signed-off-by: Warren Usui <warren.usui@inktank.com>
2014-02-14 12:57:54 -08:00
John Spray
b80e510257 Make libvirt import optional (OS X) 2014-01-31 20:53:45 +00:00
John Spray
f3ce07c65f Respect .ssh/config when opening SSH connections
This handles that case where your private key is
in a non-default location that you're pointing
to in ~/.ssh/config.
2013-12-11 13:41:36 -08:00
Zack Cerza
4135960eb6 Fix test
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2013-10-01 09:07:50 -05:00
Zack Cerza
69ea83904f Add test for skipping host key verification
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2013-10-01 09:07:48 -05:00
Zack Cerza
589560e6c9 Port from nosetests to py.test
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
2013-10-01 09:07:45 -05:00
Alfredo Deza
80dcab7fe4 only use host_key if it is not None
Signed-off-by: Alfredo Deza <alfredo.deza@inktank.com>
2013-09-25 09:25:35 -04:00
Zack Cerza
3955666e8e Add config option 'verify_host_keys'
Defaults to True, meaning no change in behavior. If False, don't have
paramiko verify ssh host keys.
2013-09-24 15:04:39 -05:00
Zack Cerza
eeb78b6b04 Update test_connect() to reflect API changes
Looks like paramiko changed a bit internally. All unit tests pass now!
2013-09-20 08:39:36 -05:00
Zack Cerza
b993ecac9b Update many unit tests to reflect 2yrs of changes
These tests hadn't been updated in over two years. Only one is left
failing.
2013-09-19 19:29:06 -05:00
Zack Cerza
6d1ed573f3 Let execute() accept a string for args. 2013-09-05 16:55:38 -05:00
Zack Cerza
6406a1ecc8 Add Cluster.write_file() 2013-09-05 16:55:37 -05:00
Josh Durgin
232e3d32bc Fix undefined symbol errors
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
2013-08-27 15:58:14 -07:00
Zack Cerza
2a7a61cd17 Add Remote.system_type property. Also, clean up whitespace. 2013-08-09 13:28:38 -05:00
Sandon Van Ness
4dbef128d7 List IP address in orchestra.run output.
Figuring out which machines output is coming from when things
are being executed on multiple machines can be a huge pain.
This prints the IP in the logs so you can easily see where one
machine stops and another begins.

Signed-off-by: Sandon Van Ness <sandon@inktank.com>
2013-07-12 20:10:36 -07:00
Warren Usui
778d930d08 Fix to ignore ssh-key checking if running on virtual machines or
if a line that reads 'sshkey: ignore' is in the yaml file.

Fix #5364
Signed-off-by: Warren Usui <warren.usui@inktank.com>
2013-06-19 11:12:09 -07:00
Warren Usui
1441707222 Make reset of ssh key code conditional on being a virtual machine.
Add and use is_vm to determine if we are running on a virtual machine.

Fix #5364
Signed-off-by: Warren Usui <warren.usui@inktank.com>
2013-06-19 11:12:05 -07:00
Warren Usui
a4994e3bde Support added for running scheduled tasks on virtual machines.
This included:
    A). changes made so that full path names on some files were used
        (scheduled tasks started in different home directories).
    B.) Changes to insure tasks come up on the beanstalkc queue properly,
    C.) Finding and inserting the libvirt eqivalent code for vm machines
        in order to simulate ipmi actions,
    D.) Fix host key code, report valgrind issue more clearly.
    E.) Some message and downburst call changes.

    Fix #4988
    Fix #5122
    Signed-off-by: Warren Usui <warren.usui@inktank.com>
2013-06-07 19:32:15 -07:00
Sandon Van Ness
98cc648ca2 Increase IPMI attempts to try to get around Flakey IPMI.
Signed-off-by: Sandon Van Ness <sandon@inktank.com>
Reviewed-by: Sam Lang <sam.lang@inktank.com>
2013-04-23 10:35:37 -07:00
Sam Lang
6fe1deadbf task/restart: Restart task for testing daemon kill
The ceph daemons support being killed at a specific code point
with a config option.  In some cases, we want to test a kill point
only once for a given daemon run (such as replay that only occurs
during daemon startup).  This task allows running a script or executable
and (when the script sends a command to the task) restarting it with
a temporary config that has the appropriate kill point set.  Once
the daemon asserts and gets restarted, the original config is used.

Adds a specific restart_with_args() method to the DaemonState in the
ceph task.

Right now this task follows the workunit task closely, but uses stdout/stdin
to specify when to restart a daemon.

Signed-off-by: Sam Lang <sam.lang@inktank.com>
2013-03-18 11:16:01 -05:00
Sander Pool
c525e1061b Install ceph debs and use installed debs
The ceph task installs ceph using the debian
packages now, and all invocations of binaries installed
in {tmpdir}/binary/usr/local/bin/ are replace with
the use of the binaries installed in standard locations
by the debs.

Author:    Sander Pool <sander.pool@inktank.com>
Signed-off-by: Sam Lang <sam.lang@inktank.com>
2013-02-18 13:39:03 -08:00
Sam Lang
46d3ff94f5 run.py: Add target name to logging info
Signed-off-by: Sam Lang <sam.lang@inktank.com>
2013-02-03 11:09:04 -06:00
Sam Lang
58111595d4 Support power cycling osds/nodes through ipmi
This patch defines a RemoteConsole class associated
with each Remote class instance, allowing
power cycling a target through ipmi.

Fixes/Implements #3782.
Signed-off-by: Sam Lang <sam.lang@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
2013-01-31 08:23:37 -06:00
Dan Mick
120ce3f8a7 Pass up unmodified exceptions from connection.connect()
This allows useful errors to be reported from things like
mismatched hostkeys, etc.
2012-06-05 18:41:45 -07:00
Sage Weil
1a01ccaafb Pull from new gitbuilder.ceph.com locations.
Simplifies the flavor stuff into a tuple of

<package,type,flavor,dist,arch>

where package is ceph, kenrel, etc.
type is tarball, deb
flavor is basic, gcov, notcmalloc
arch is x86_64, i686 (uname -m)
dist is oneiric, etc. (lsb_release -s -c)
2012-03-13 10:02:26 -07:00
Tommi Virtanen
0dd4d69ffe Fix unit tests for SSH keep-alive setting.
Commit 6e3e0d7cdc failed to pass
unit tests.
2011-12-05 10:02:30 -08:00