2
0
mirror of https://github.com/xcat2/confluent.git synced 2024-11-28 20:39:40 +00:00
Commit Graph

74 Commits

Author SHA1 Message Date
Jarrod Johnson
4ef60d3106 Have persistent ipmi command objects break selves on reconfig
When any reconfiguration happens, break a command object (and the session that lies beneath).
This does cause needless churn in response to some changes that wouldn't matter, but it's a
small price to pay for the simplicity of not bothering to be fancier.
2014-05-06 10:06:33 -04:00
Jarrod Johnson
23aac5dab7 Rework error reporting for errors.
For now, the only live path is the one that
gets struck by exception.  However, the exception
only happens on 'strip_node', meaning for
multi-node resources, things should be sane when
the time comes.
2014-05-05 19:53:57 -04:00
Jarrod Johnson
811ee5eeda Change ipmi console closure to only close SOL
Previously, was pulling the cord on a perfectly servicable IPMI
session object.  Change to just deactivating the SOL portion
of an IPMI connection if the console closes.
2014-05-05 18:40:28 -04:00
Jarrod Johnson
4db53fd00e Implement honoring of console.logging=none and fix reuse of broken ipmi command objects 2014-05-03 11:59:35 -04:00
Jarrod Johnson
6069eceb23 Provide better trace capture for AttributeErrors under ipmi
The ipmi plugin would erroneously treat all AttributeErrors following from
'next()' as indicating the top level was not a generator/iterator.
2014-04-30 13:07:31 -04:00
jbjohnso
ecbf2e95f9 Provide more specific details to client about reason for being unconnected 2014-04-23 14:04:26 -04:00
jbjohnso
d269be6f8b Implement 'unset' on group attributes 2014-04-22 16:23:33 -04:00
jbjohnso
49074bec74 General code cleanup 2014-04-21 10:48:18 -04:00
Jarrod Johnson
db456dd9e5 Have consoles meaningfully retried to see if the target is reconfigured
Previously, if a username or password was bad, retry would not occur.
Correct this such that every so often or right when someone connects,
the target is checked to see if the user/password is now considered good.
2014-04-16 10:18:59 -04:00
Jarrod Johnson
e4d0cb8207 Implement persistent IPMI structures
This reduces the health check from 2 seconds to 500 milliseconds
2014-04-15 15:24:32 -04:00
Jarrod Johnson
ca2a4ed775 Add health/hardware resource to nodes and wire up for IPMI 2014-04-15 14:59:36 -04:00
Jarrod Johnson
9d72be287e Implement send break support in confluent consoles 2014-04-09 15:37:35 -04:00
Jarrod Johnson
92512da79f Apply IBM 2014 copyright and Apache 2 license to project 2014-04-07 16:43:39 -04:00
Jarrod Johnson
be552cc446 Fix the session reconfiguration automatic response
Previously, it would register 2**x attribute watchers by mistake.  Exponential
growth of threads trying to talk to one BMC is evidently a bad thing.  Fix
this by correctly tracking and cancelling previous attribute watchers.
Additionally, mask a harmless exception brought on by the death of orphaned
pyghmi console objects by having them yell into the endless void rather
than trip on an exception.
2014-04-04 20:45:48 -04:00
Jarrod Johnson
4f2b15dc8e First pass at automatic reconfiguration enablement
The ipmi plugin, at least, is not yet quite right.  Need to
continue debugging having a console session open, then changing
the bmc to a bad address, then changing it back.  I fixed some of
the easier exceptions, but it is clearly still getting quite confused
to the point where 3 or 4 cycles guarantees the console can not easily heal.
2014-04-04 18:40:45 -04:00
Jarrod Johnson
0d668e3f55 Fix ipmi plugin use of new attribute names 2014-04-04 09:15:20 -04:00
Jarrod Johnson
c89a165c6a Simplify IPMI credential management
The strategy was going to allow for a distinct IPMI account for automation
from other protocols.  However, this is pretty complicated to explain to
people.  The thought before was that the HTTPS/SSH type access could use
a passphrase that is easy to remember whilst ipmi accounts would tend
to be randomized.  Instead, have the software managed authentication
info be used across all protocols and avail endpoint of user management
to add human-friendly accounts if needed (disabling IPMI/SNMP by default
in such cases).
2014-04-04 09:09:00 -04:00
Jarrod Johnson
a2f540d3b9 Fix issue where ipmi plugin left configmanager decrypting more than needed 2014-04-02 08:59:40 -04:00
Jarrod Johnson
a29032e70c Rework ipmi console object to block on connect
Previously, the state would be seen as 'connected' and then 'disconnected' in event of
connection failing.  Rework things such that the console session stays in 'connecting' state
until timeout or success occurs and don't send disconnect, instead raising an exception.
This makes the connection action a bit more intuitive to the user, who would assume a 'connected'
console means the endpoint was reachable.  This may not always be possible in a console plugin,
but it's a nice pattern when possible.  If a console plugin cannot tell when 'connected' happens, then
the previous behavior of this plugin makes sense as a 'best effort': return 'connected', send
disconnect event when the console turns out to be bad.  For example, executable consoles are most
likely going to follow this pattern.  An option could be for an executable to have a certain
signature to print to show 'connected' though...
2014-04-01 16:53:20 -04:00
Jarrod Johnson
6fcfc70985 Rename endpoint unreachable exception to be more genericly applicable 2014-04-01 16:32:56 -04:00
Jarrod Johnson
f326a03d33 Fix attributes plugin for api rename 2014-03-28 15:29:48 -04:00
Jarrod Johnson
811ca61747 Fix problem where broken expressions were not gracefully handled
Now when expressions can not be completed, the reason is presented as 'broken'.
Additionally, when unsetting a value that would affect expressions,
perform appropriate changes.
2014-03-03 14:48:46 -05:00
Jarrod Johnson
ea7d3a268c Implement 'unset' in confetty interactive cli.
Provide a means to clear node specific settings so that inheritance can be restored.
In JSON, send a null as a value for a parameter instead of a string or 'object'.
2014-02-22 21:53:34 -05:00
Jarrod Johnson
f7c1dc8385 Have ipmi plugin recognize the rename to nextdevice 2014-02-22 21:14:55 -05:00
Jarrod Johnson
e236260c3b Have console assume ipmi if no data given, like hardwaremanagement 2014-02-22 19:28:41 -05:00
Jarrod Johnson
f6ed5b5e14 Have confetty interactive attribute show be more informative 2014-02-22 19:12:42 -05:00
Jarrod Johnson
70b7b62c0f Give messaging layer full info about attributes in attributes plugin.
Messaging layer was unable to contemplate adding info about inheritance and expressions.
2014-02-22 18:20:07 -05:00
Jarrod Johnson
a68deebec8 Improve the get_nodegroup_attribute to be more full featured
Also, move masking of the _expressionkeys attribute into the core
of the class rather than working around it.
2014-02-19 20:36:39 -05:00
Jarrod Johnson
f2c09795ff Fix expression based callout of other keys
The '_' prefixed attributes suggest more care should be taken.
2014-02-19 20:24:51 -05:00
Jarrod Johnson
b823bc37d2 Fixup unknown attribute handling.
For one, prevent unknown attributes from getting into configmanager from now on.
Additionally, have the attributes plugin manage to convey bad attributes when
encountered.
2014-02-19 19:10:58 -05:00
Jarrod Johnson
b6853cfbe1 Fix display of group attributes
Something still seems off about it, but it is self contained to attributes plugin for now.
2014-02-18 13:48:26 -05:00
Jarrod Johnson
2b6188e0b6 Add nodegroup management to API
Have nodegroup attributes exposed via API so that they are at
least nominally useful
2014-02-18 13:22:07 -05:00
Jarrod Johnson
c77eb5be3b Have configmanager protect against unrecognized data.
When doing a set, check the keynames and value types as
appropriate.  raise ValueError in the configmanager case
since it could be code or human mistake.  attributes plugin
then catches this error and propogates it up as an InvalidArgumentException
if it is just trying to pass in data from user.
2014-02-13 12:58:03 -05:00
Jarrod Johnson
0d425f1f9f Add cli support for 'show'
confetty interactive mode can now do 'show' (aka read, retrieve, whatever) on
more abritrary resources.
2014-02-10 19:36:18 -05:00
Jarrod Johnson
d2d7f04f49 Further simplify ipmi plugin
With the threading complications removed from worry,
continue making the ipmi plugin more straightforward
to read, maintain, and evolve.
2014-02-06 11:08:55 -05:00
Jarrod Johnson
80d4518a49 Remove more vestiges of the thread support
Also, remove a required function from console interface.  Now a plugin
is only responsible for their thread behavior and never responsible
for the consoleserver mechanism requirement for helping user session
do polling IO.  This is additionally great because it means the
coordination is contained to each session object and many client connections
are not causing multiple calls to iterate the wait loop.
2014-02-06 09:27:38 -05:00
Jarrod Johnson
fd27835424 Remove thread aspect of ipmi.py
This is a work in progress, trying to make ipmi.py theoretically look better.
2014-02-05 09:20:39 -05:00
Jarrod Johnson
131e64ef0e Fix cval assignment exception
For SOL sessions, the queue could be touched without anything in ipmiq.
Have cval be set to something benign in those cases to avoid a trace in
debug.
2014-02-01 19:43:28 -05:00
Jarrod Johnson
9749c173ac Have command errors raised in the context of the calling code
Errors were not being raised in a manner to actually affect the request
threads.  Address it by having the exceptions raise in the correct context.
2014-02-01 19:41:15 -05:00
Jarrod Johnson
170e7934ca Restructure ipmi plugin logon errors
Make it so that logon errors are raised in the context
of the request(s) that actually care.
2014-02-01 19:28:31 -05:00
Jarrod Johnson
50891f235e Implement session loss recovery
When a console object reports disconnect, have mechanism to get back in.
2014-02-01 18:49:36 -05:00
Jarrod Johnson
dae131d40f Fix race condition on console connect
When data was coming in during logon, it was possible for
the handler to be called before rcpts member was initialized.
Correct by initializing rcpts prior to taking any other action.
2014-02-01 09:39:57 -05:00
Jarrod Johnson
086c18c641 Have ipmi plugin print out traceback data when exceptions would be encountered
For now, see the errors even as they are tolerated.  This allows problems to be fixed
as best as possible.  Ultimately, this will be logged.
2014-01-30 09:47:06 -05:00
Jarrod Johnson
b944677f85 Fix ipmi events if pyghmi spins in an eventloop
If circumstances inside pyghmi cause it to be looping in
an event loop, confluent was getting work done, but
the code to wake up the eventlet greenthreads wouldn't get tickled.
Address this by also waking up waiters in the function that is
invited to the pyghmi event loop party.
2014-01-29 22:08:48 -05:00
Jarrod Johnson
55ef78fc64 Correct issues in trying to keep ipmi worker alive 2014-01-29 12:52:57 -05:00
Jarrod Johnson
1b6c258934 Last change made exit fail badly, correct that 2014-01-28 17:48:59 -05:00
Jarrod Johnson
7709a52eda Better isolate faults in the ipmi plugin
Previously, one ipmi failure would tank all consoles and commands.
Now, at least console failures are isolated.

Next stop is to isolate command failures, then fix up session recovery.
2014-01-28 17:41:01 -05:00
Jarrod Johnson
343600c2aa Rework the 'update' button for clearer use alongside other buttons 2013-11-22 18:27:15 -05:00
Jarrod Johnson
7752bbbc27 Enumerate nodegroups 2013-11-13 15:12:57 -05:00
Jarrod Johnson
5e406d6fa1 Have attribute set return some data
Handle html form arrays with blanks, removing blank values
(more complex usage requires JSON)
2013-11-13 14:52:32 -05:00