42 Commits

Author SHA1 Message Date
Russell Haering
dcd6e3e0dc Add a @sync_command() decorator
Instead of special-casing syncronous commands, add a decorator similar
to @async_command(), which can be used to decorate extension methods
for execution as a synchronous command.

Change-Id: I1b27f179f667cb065bcffd71ae0f303b05d33b82
2014-04-14 15:22:07 -07:00
Russell Haering
5ebd2e9797 Organize agent extensions
Move extensions under an ironic_python_agent.extensions module. This
change also moves the @async_command() decorator into the base
extension module.

Change-Id: I4021fcc33a30f3460a31bca44a4bf776cd53d488
2014-04-14 15:09:12 -07:00
Jenkins
304be37239 Merge "Use configurable driver name in lookup URL" 2014-04-14 18:48:49 +00:00
Jim Rollenhagen
46e9776d42 Use configurable driver name in lookup URL
Allow configuration via command line arguments or kernel parameters.
Default to agent_ipmitool, the reference driver.

Depends on https://review.openstack.org/#/c/84795/12

Change-Id: I55c4a8713308d038002a6567471cd862bf89ec76
2014-04-14 11:32:16 -07:00
Jenkins
00a299cc80 Merge "Add FlowExtension" 2014-04-14 18:17:57 +00:00
Jenkins
952ade37f6 Merge "Kill the build_agent function" 2014-04-14 18:12:45 +00:00
Russell Haering
8422118fa4 Kill the build_agent function
This used to actually do things, now it just wraps the constructor.
Lets kill it.

Change-Id: I320684f8f52d032a1755460eacc70f5aeee92d7a
2014-04-14 10:12:31 -07:00
Alexander Gordeev
18aa51f1f1 Add FlowExtension
It makes possible of running data-driven flow which's the list of
the other existent extensions to be called.

Change-Id: Ib73ea4da92f291c872b7ae51e46ecc7fdd45ee16
2014-04-14 20:01:08 +04:00
Alexander Gordeev
bd19a03f92 Add self to validator method
This patchset allows access to extension class instance for more
advanced command validation.

Change-Id: I9d6df1ab44ab06ef2e663ad777ad3560d9ab7565
2014-04-14 19:25:19 +04:00
Alexander Gordeev
5bc793bcb0 Resolve circular import, introduce ExecuteCommandMixin
Adding new methods to utils won't work as the circular import appears
between errors.py and utils.py.

Introduce ExecuteCommandMixin and use it for IronicPythonAgent and
FlowExtension (in future patch).

Also add tests for its.

Change-Id: Id95b31349292a7967d2ee66ec82c1662d8e5de94
2014-04-14 16:04:28 +04:00
Jenkins
88f06e2831 Merge "Use # instead of """ for copyright blocks" 2014-04-11 23:47:09 +00:00
Jay Faulkner
1384d79d2c Implement version 2 payload with more hw info
Bumping the payload version to two, and adding CPU, Memory, and Block
Device information to the inventory.

Added dependency on psutil for available memory and cpu_count.
Requirements line copied from global requirements

Change-Id: Ia39c85c91b1d60468667787a7978020084dc6c2a
2014-04-10 17:37:54 -07:00
Jenkins
bbe50749fc Merge "Add BackOffLoopingCall with jitter" 2014-04-11 00:07:58 +00:00
Jay Faulkner
6e619f0261 Deprecate hardware._cmd in favor of utils.execute
This removes the custom function that was in place before our move to
Openstack in favor of the utils method integrated with oslo.

Change-Id: If668e53ccc97743b00c4beae39d153ee63ed015a
2014-04-10 14:26:57 -07:00
Jenkins
dd79f5acb5 Merge "Properly mock _cmd so blockdev does not run" 2014-04-10 19:47:47 +00:00
Jay Faulkner
1653c558ef Close file handle after use
The file handle for addr_info was left open, meaning we were leaking
file handles when sending system information. This ensures the handle is
closed.

Change-Id: I4b117d4f9ec32ad3f16f43632ffe9dc96da5ab7f
2014-04-10 11:06:58 -07:00
Jay Faulkner
b43261c815 Properly mock _cmd so blockdev does not run
blockdev --report was being run with the previous way this test was
mocked. This fix causes it to not be run.

Change-Id: I7ab5dcca0a3a89ef4c62a2f40981958de73cd6f1
2014-04-10 10:02:40 -07:00
Jim Rollenhagen
3c1d52cbb1 Use # instead of """ for copyright blocks
Reformats copyright messages to be comments rather than
docstring-style blocks.

Change-Id: I4d863f53b67bb49d03bda0952b9e6179b6d23c59
2014-04-10 07:14:06 -07:00
Jim Rollenhagen
b826a72a7b Version node lookup payload
This payload may change over time and should be versioned.
Corresponds to https://review.openstack.org/#/c/85228/

Change-Id: I58b1d69a2c41ff105038178632e289cb4b12c971
2014-04-08 13:16:46 -07:00
Jenkins
7554b78d76 Merge "Move split_command to utils" 2014-04-07 23:35:36 +00:00
Jay Faulkner
c121bef9f0 Compatibility fixes for Python 3.3
1) Added a py33 environment to tox
2) Updated tests to mock the correctly named builtins.open based on
python version
3) Other minor compatibility fixes

Tests for Python 3.3 will not pass due to this bug:
https://github.com/eventlet/eventlet/issues/83 among possibly others in
eventlet.

Change-Id: Ie4b512a926fa690ee77a71a89851c871ea1f6be0
2014-04-07 11:39:23 -07:00
Josh Gachnang
bd25174338 Add BackOffLoopingCall with jitter
Using DynamicLoopingCall involved a few hacks to make it work properly. This
new BackOffLoopingCall will start an exponential backoff (with a configurable
jitter) when there is a failure. The backoff will continue until the given
function returns True or timeout is about to be exceeded. The function will
run indefinitely until either an exception is raised or timeout is reached.
I plan to merge this into oslo loopingcall and switch the heartbeat to this.

Change-Id: I1482348e98c6b68c34b3003645029e08135b1341
2014-04-07 10:59:47 -07:00
Alexander Gordeev
9171ce659d Move split_command to utils
This patch moves _split_command from IronicPythoAgent class to
utils module. Also fixes import looping.

Change-Id: Ibf2b0b3885286b9ad78db64cf9e195de4ad627ad
2014-04-07 17:58:02 +04:00
Jenkins
cae81837ce Merge "Added execute util" 2014-04-04 21:32:23 +00:00
Jenkins
7164b4220b Merge "Add timeout param for execution_thread.join" 2014-04-04 20:51:03 +00:00
Vladimir Kozhukalov
7736de66ca Added execute util
It is needed to run OS commands. It uses
oslo processutils. It is just a copy of the
same method in openstack/ironic except
using rootwrap was removed.

Change-Id: I2efede22b1fa25febe91879c0fefcdfc7f3d1dd5
2014-04-04 20:31:04 +04:00
Alexander Gordeev
160c0775f7 Add timeout param for execution_thread.join
Having timeout is necessary for the FlowExtension.

Change-Id: I0b8b937595cd6daa64f6a69dc6b1042bba2724c8
2014-04-04 18:36:44 +04:00
Josh Gachnang
1a87ebfcce Adding oslotest to improve debugging
oslotest includes things like showing log messages/stdout on test errors,
which makes debugging much easier. Also moved mock to second group in imports,
as it's a 3rd party library.

Change-Id: I016ae0a376d42dec28085687ea7194df4cd44eda
2014-04-03 14:02:53 -07:00
Vladimir Kozhukalov
51bb147e47 Added some oslo modules
Added some oslo modules which are needed
for generating config samples and for running
os commands. Re-synced oslo from
b7ad6ddab8b1d61bf4f52ccaa461a9d68809747b which
is master.

Change-Id: I6e35ba1f0df007876f4dc25e7e2bd553986bfa8d
2014-04-03 21:06:41 +04:00
Vladimir Kozhukalov
826edb688f Synced oslo modules
Re-synced oslo from
b7ad6ddab8b1d61bf4f52ccaa461a9d68809747b
which is current master.

Change-Id: I9a8c4a71541381d00e90011cd6d95645546764b7
2014-04-03 19:53:31 +04:00
Jim Rollenhagen
9cfa63d2d0 Add kernel parameter support
Allow the agent to read arguments from the kernel command line.
Priority is: agent command line, kernel command line, defaults.

Change-Id: Idfd43a8b7fdf6c368cf55d45b32cb7bcfbb56212
2014-04-01 06:23:24 -07:00
Jenkins
517616938e Merge "Adding DynamicLoopingCall around lookup" 2014-03-31 22:18:27 +00:00
Josh Gachnang
3bc4866a21 Adding DynamicLoopingCall around lookup
Currently, if a single lookup call to the Ironic API fails, the entire
agent errors out and restarts. This allows the agent to retry for a set
amount of time before throwing an uncaught exception forcing a restart.

Change-Id: I39752fb3f42ad3e4f15a49194f1554e1d3463cf8
Closes-Bug: 1297019
2014-03-31 14:54:14 -07:00
Alex Gaynor
a3cab12393 Added PyPy env to tox.ini
Also fixes tests that were broken on PyPy.

Co-Authored-By: Jim Rollenhagen <jim@jimrollenhagen.com>
Change-Id: I2554aa844b040c4c74cbf287dccb06d816a39dbe
2014-03-28 08:26:17 -07:00
Jim Rollenhagen
6329ae46db Fix URL for node lookup
Change-Id: I5b128a74bf0442f61d722978308c03c6ec45f8d8
2014-03-27 12:35:16 -07:00
Alexander Gordeev
aee1555156 Get rid of modes. Introduce pluggable extensions
Allow multiple extensions to be loaded by switching to ExtensionManager
from stevedore. Remove any reference to modes.

Change-Id: Ic160478625226b4dd17bd68b3d37f3b05823e519
2014-03-27 17:28:57 +04:00
Josh Gachnang
d8c0f1b794 Actual exception message, stylistic changes 2014-03-20 15:57:20 -07:00
Josh Gachnang
234d209729 Removing commented out code 2014-03-20 15:51:54 -07:00
Josh Gachnang
6dc09f3148 Getting the heartbeat from Ironic instead 2014-03-20 15:18:48 -07:00
Josh Gachnang
fc043dd1d3 Fixing import order 2014-03-19 17:06:34 -07:00
Josh Gachnang
5914e36b30 Replacing teeth/overlord with ipa/ironic 2014-03-19 16:19:52 -07:00
Josh Gachnang
b30d345c2e Renaming to IPA 2014-03-19 15:50:43 -07:00