By raising it in the callback, another thread doing wait_for_rsp
might get hit by it. Store the message and then raise in __init__
so that it lands in the correct vicinity.
Change-Id: Id450a4a3f6194d95bb0eac971e0586525c49e490
For channel 0xe, we can skip checking if the channel
is active, since, obviously, we are connected to that
channel. Since *current* active channel cannot be
inactive, assume that is good if seen.
Change-Id: I894bd27e6c76bb9ace0959566117ad6a6f8866ad
The dictionary size can change, causing this loop to
fail. Fix by wrapping the iterator in a list prior to
iterating.
Change-Id: I67dd5b8b69698e67d6fd07ab18114ce144999d7a
Sending a udp datagram doesn't block long enough to be bothered. On
the flipside, the filehandle sharing can throw eventlet for a loop in
some environments and circumstances.
Change-Id: I2d6f8b79f0e49c5f21b3b0cf1b9956443ece7eea
Circumstances are such that sometimes a BMC
logs being in setup at a time when it is
not strictly 'entering'. Change wording
to be less specific.
Change-Id: I5863b07640df2a32ff5b1056f20d034fa86c0ae7
Web connections were defaulting to infinite timeout. If
a problem happened in the midst of a connection, a request
could hang things indefinitely. Add a 60 second timeout
to purge these situations.
Change-Id: Ica05e2bfb9242ccc564e39c8631d8bf7e3f230a5
This is a subset of pyghmi functionality for use in dealing with BMC
over KCS or similar Linux driver supported IPMI access through
/dev/ipmi0
Change-Id: Ifeb3935cbb3c95e7871b74a2b42e59e71ecb6697
Another firmware change becomes sensitive to the value of referer.
This adds the same referer header value that would occur naturally from
a browser.
Change-Id: I20928bbd88a4df281f9fb4f7cc472419a6059f09
Some BMCs appear to expire a session within 30
seconds, unfortunately.
Also, be careful to always fire events, even if the remote has gone away.
Change-Id: I1b57fa8841ca19c77d36abe3ccc5bf877e09945a
When an reading is unavialable, a distinct set of
attributes were available. Correct this by at
least having the same attributes available.
Change-Id: I9fc351d804f638a2535a2c9be9d9e9929f2be6ba
Some implementations offer device SDRs, but also
SDRR. For such cases, gleefully ignore the device SDRs,
and move the 'needs implementing' down to a scenario where
it could both work and would be needed.
Change-Id: I2219ba7407f2e0030817d93f394657266e70deda
Rearrange things such that in the future, distinct generations
of IMM that are very similar may be supported with common
code through inheritence while deviating in the ways that are
needed.
This also removes the redundancy of registering the certificate
callback in the OEM layer and standard layer and instead just
has it in the standard layer.
Change-Id: Ic386553d080163ed63b6e4f2294839654e377269
This patch is changing the IpmiServer and Session classes to figure out
which IP version has been passed to it and create the correct socket.
Change-Id: I802c4e2dbe140da40f3f3111aa84d692d4374bb1
This patch is improving the .gitignore files to not track things like:
Python compiled code, Python eggs, VIM swap/backup files, etc...
Change-Id: I2b82d0a54c2584f5a5f7e8792ea8c71aaba48183
To be consistent with the rest of the method this conditional should
raise an exception instead of returning a dictionary with error. Also a
:raises: note was added to the set_power docstring.
Change-Id: I3d99d630019bb180c0ce3cd4cdb7652b32651352
Various strings/date formats may be used
in different places, and in fact the same place.
Use a consolidated catch-all parser to convert
the strings to a datetime.
Change-Id: Ie84229056ba55806bce1527ea263a80c29ff7048
The duplicate sensor code can result in an id that never
gets added. As such, do not worry if trying to delete
something that is already not there.
Change-Id: I77af1054097d4225ad8bff68a046c6ed28791e9b
Each line was getting its own bullet point, leading to bullet points in
the middle of sentences. This patch removes the excess bullet points.
Change-Id: Ifb3a5e66fe6796236efe46e4dbda0ee2e89b0fcc
It was incorrectly trying to abbreviate names that
are already short enough, causing a problem for certain
name lengths.
Change-Id: Iebb977bef3db0131cad3d923f5943f9bfa9247a6
Newer versions of IMM firmware implement a mechanism to guard
against CSRF. Use the provided token via custom header to prove
that our requests are not CSRF.
Change-Id: I6cc030302ecacdfedc8e2fcf6e7588a82db957e7
To have python 2 act more like python 3 and look
like python 3, make range = xrange where xrange exists.
Change-Id: I9918604a619f33682aee3b9896a3bb6afcd8aa8d
When error encountered, we still need to consume
the response with rsp.read(), or else a subsequent
request will fail.
Change-Id: Ica4f69cadf32a204af3e69a1ee6d336e08f7fc78
In python 3, range() does what xrange() used to do and xrange() does not
exist. If you want to write code that will run on both Python 2 and
Python 3, you can't use xrange().
range() can actually be faster in some cases - eg. if iterating over the
same sequence multiple times. xrange() has to reconstruct the integer
object every time, but range() will have real integer objects.
(It will always perform worse in terms of memory however)
xrange() isn't usable in all cases where a real list is needed.
For instance, it doesn't support slices, or any list methods.
Change-Id: I15369a8b9335f5221a52d292a4aa1e36a0850b8f
Python 3 does not implement buffer. Use memoryview
as a standin if buffer would induce a NameError.
Change-Id: Id36e8253fffee9dc22bd982e00554f1c25bc95b4
FPC PSU status reporting requires OEM commands. Provide
OEM to pyghmi sensor model translation. to enable normal
applications to read it.
Change-Id: I63b950db7ffa5a5a2ba2ed3a2f2be33a53221b03
In a multi-SOL multiplex case, keepalives could
bring the whole thing to a grinding halt.
Fix this by having a way to request raw_command do
'waitall', which is really just running wait_for_rsp
recursively, as used to happen. This is not done by default
as for normal synchronous requests, it is a much more expensive
approach at scale. Reserve it for the special case of wait_for_rsp
which should not hang up on any one response going south.
Change-Id: If8890bf959c2376f58c2b36f0445a5b800280b2b
If session no longer exists, do not try to manipulate it's keepalives.
Remove instances of calling the function where it would be redundant.
Change-Id: I2011f8012175ef12ce83eb34fbf4de9650fb157e
When a system did not have any custom keep alive, the
code to mark the esssion broken erroneously tries to
dereference.
Change-Id: Ic4efe3c65ee4c09c97ef9f08dc30603c4c15d872
Software could end up creating duplicate console
objects. Try to adapt by assuring only the most
recently created one is the sol_handler (by using
existing sol_handler to reach old instance). Also
unhook a keepalive when we go broken. When the ipmi
session breaks, notify all custom keepalives active,
rather than just the one currently holding SOL session.
Some of these changes in principle may be duplicate, but
it should be more robust this way.
Change-Id: Id8d3869917de3db723a4b6a79e02643345111b3a
If a system runs many ipmi clients, over time
it may reuse UDP ports. We currently take this
as a sign of an established relationship in
the same manner we have client to server, but
here clients can be ephemeral. Cope by
clearing out the current session state
and allowing a new session to come alive.
Change-Id: I2496716d535354616461460f47196d733cde1a87