Properly implement authentication and switch the protocol over to the tlv
based protocol. Abandon all thought of the socket being directly accessible.
Any CLI semantics will be in confetty and an appliance wishing to expose that CLI
directly should use standard ssh stuff with a shell of confetty. The unix domain
authentication support makes this feasible (requires user creation push name into
confluent repository at the moment..)
Previously, was just keying by node. The problem of course being that
the first tenant to connect for a given node name dictates the console
object for everyone else. Correct this by keying by the tuple of tenant and node together.
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.
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.
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.
If a plugin has a default and is also explicitly defined,
the pluginapi would call the code twice. Correct this by avoiding
calling the default if specific info not specified already
If an authorized user tries to use a session id that isn't recognized
(for example, a laptop coming out of suspend), cleanly return error
rather than traceback.
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.
-defer to document completion (all at once) for more straightforward code
-data only gets into arrays when there is a multitude
-at least for now, 'pretty print' the dumps in http interface
I may wish to change http api to a single json dumps. At that point the
socket api would be the only consumer of the piecewise json messages.
Merging the json data is a non-trivial problem and httpapi is doing too much
hand assembly of the data.
http api would lose any hope of one request, staggered response behavior as a result,
but http is a terrible protocol for that anyway and there is always the socket api