Commit Graph

469 Commits

Author SHA1 Message Date
Tony Breeds f48f077c57 Retire Packaging Deb project repos
This commit is part of a series to retire the Packaging Deb
project. Step 2 is to remove all content from the project
repos, replacing it with a README notification where to find
ongoing work, and how to recover the repo if needed at some
future point (as in
https://docs.openstack.org/infra/manual/drivers.html#retiring-a-project).

Change-Id: If5041c4af99df6cc45685c6a5bb4ac7feb786622
2017-09-12 16:10:00 -06:00
Jarrod Johnson 6b4cf30a98 Support XCC variations for inventory
XCC is structurally the same, but vocabulary changed.
Adjust by abstracting vocabulary at the class level.

Change-Id: I7352f089683bbabdb87d86d87a7f399cd8241fc4
2017-07-25 09:55:29 -04:00
Jenkins 316f4bf26c Merge "Apply firmware update through XCC" 2017-07-24 20:49:15 +00:00
Jarrod Johnson 05754f9977 Apply firmware update through XCC
Automate from API the process of applying a firmware update to
XCC.

Change-Id: If32044431380b90ac47e1b3642fb5013da199f70
2017-07-24 15:27:50 -04:00
Jarrod Johnson 01ad6710c4 Correct a typo in dictionary name
At some point, bmc_handlers was mispelled, affecting graceful handling of
detecting a broken port.  Correct the mispelling.

Change-Id: I80e86b9d98fb211a3f1195658b93eaa5a2e88c61
2017-07-20 11:14:37 -04:00
Jarrod Johnson 52f5224ca1 Correct the offset to adjust for IPMIv2
For IPMIv2 sessionless data, there is not 13 bytes
to strip out, but instead only 2.  I suspect because
reading the sample packet, the last row unique values
were added without looking at the context.  Correcting
for context, the IPMIv2 header is only two bytes longer.

Change-Id: I9b99417c39f519dfa68b59a90a3ef7ca0232e97e
2017-07-14 16:43:26 -04:00
Jarrod Johnson 45a8facadd Allow things like multiple distinct users
A new set of credentials would break existing sessions.
Support concurrent use of multiple users/passwords, since
there are valid use cases.

Change-Id: Ic63364f05ec9270e06656d13bbb02d7c88fd21d4
2017-07-14 08:44:52 -04:00
Jenkins b423b68233 Merge "Improve (de)activate payload in virshbmc" 2017-07-12 14:39:01 +00:00
Akira Yoshiyama 4999068c3e Improve (de)activate payload in virshbmc
This patch adds LibvirtBMC.check_console() to manage a
libvirt event-monitoring thread properly.

Change-Id: Ie365db150a74cf987cfb9d2a6fea2ffc26e4c606
2017-07-12 17:24:49 +09:00
Akira Yoshiyama a49bb1da9d Protect Session.*_sessions operations
Multi-thread application like virshbmc can break
Session.keepalive_sessions and Session.waiting_sessions
with their concurrent operations.
This patch adds exclusive locks to avoid the problem.

Change-Id: I191ed066f02fd329da5a210e2383fa72481916ef
2017-07-12 11:57:56 +09:00
Akira Yoshiyama 80db136674 Protect Console.pendingoutput operations
Multi-thread application like virshbmc can break
Console.pendingoutput with its concurrent operations.
This patch adds an exclusive lock to avoid the problem.

Change-Id: I776c2a09069e4af129c865acc1bf47ba021b4e39
2017-07-12 11:42:25 +09:00
Akira Yoshiyama 3e6ca2dcb1 Implement util.protect() lock manager
protect() handles exclusive locks. It can be used as a context
manager and as a decorator. Multi-thread applications like virshbmc
require exclusive locks to protect list operations and references.

Usage:

   import threading
   from pyghmi.ipmi.private import util

   LOCK = threading.Lock()

   @util.protect(LOCK)
   def foo():
       ...

or

   def foo():
       with util.protect(LOCK):
           ...

Change-Id: I96eb1fac17a519b4e864731f4fa0285ccc2edb08
2017-07-12 10:59:59 +09:00
Akira Yoshiyama 756ebdbffb Implement Serial-over-LAN (SOL) in BMC
This patch adds a BMC-side SOL-related class and methods:

  console.ServerConsole:
    Sub-class of console.Console for BMC

  bmc.Bmc.is_active():
    returns whether the BMC is active

  bmc.Bmc.activate_payload():
    activates SOL session

  bmc.Bmc.deactive_payload():
    deactivates SOL session

See bin/fakebmc and bin/virshbmc for examples.

Change-Id: I0e649ee0e2b45824a34c9634b00fd4f94c46c8de
2017-07-11 13:15:01 +09:00
lijingxin d363fb3821 Pyghmi does not follow the pep8 standard
Pep8 check is necessory for our code, it also makes your
code easy to readable and understandable and beautiful.

Change-Id: I4bb8434db07bf8fe82a4f65dfdfe7f2114b00083
Closes-Bug: #1699298
2017-06-23 08:37:20 +08:00
Jenkins 616fbe8276 Merge "Implement support for ThinkSystem servers" 2017-06-20 18:52:17 +00:00
Jarrod Johnson d1f48b02c0 Implement support for ThinkSystem servers
Change-Id: Ic45943c4b882bb13390722cca58b8b1785386e86
2017-06-20 13:30:32 -04:00
Jarrod Johnson d489b151fb Do not reuse an expired session
If a caller does not do a keepalive, but instead
creates new Command objects or similar, accomodate
by ditching the session that was not kept alive
rather than trying to use it.

Change-Id: I94fba08e3b2c03862b053c11aa3ee6b810db6f21
2017-05-16 13:59:44 -04:00
Jarrod Johnson 4c366d2f47 Move raising sync login exception
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
2017-05-09 15:51:59 -04:00
Jenkins b5b4e83a39 Merge "Fix get_network_channel for BMCs that dislike 0xe" 2017-04-20 18:35:24 +00:00
Jarrod Johnson 130ef46579 Fix get_network_channel for BMCs that dislike 0xe
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
2017-04-20 13:19:55 -04:00
Jenkins dba5b9e608 Merge "Fix cleanup loop of changing dictionary" 2017-04-20 14:57:10 +00:00
Jarrod Johnson 42c0422930 Fix cleanup loop of changing dictionary
The dictionary size can change, causing this loop to
fail.  Fix by wrapping the iterator in a list prior to
iterating.

Change-Id: I67dd5b8b69698e67d6fd07ab18114ce144999d7a
2017-04-19 15:04:06 -04:00
Jarrod Johnson a20566f8e2 Abort MAC decode from FRU if not 'binary'
If the TLV says the mac data is text, then it's not going to be a good day.
Abort in such a case.

Change-Id: I597df429de9af516aa28868d90f31984fa2923e2
2017-04-19 09:38:06 -04:00
Jarrod Johnson b9b9620a9d Bypass eventlet sendto when detected
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
2017-04-11 13:47:44 -04:00
Jarrod Johnson 324cc6a344 Change the wording of setup event
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
2017-03-14 13:52:40 -04:00
Jarrod Johnson 7fc07debf8 Set a 60 second timeout on web
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
2017-02-27 11:35:19 -05:00
Jenkins a363bd92fb Merge "Support in-band IPMI for Linux systems" 2017-02-27 16:09:14 +00:00
Jarrod Johnson 26573c1ce5 Support in-band IPMI for Linux systems
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
2017-02-27 08:21:19 -05:00
Jarrod Johnson d77d0a1904 Allow LookupError on decode
If a minimal Python distro does not have
obscure decodes, do not cause a problem.
t review
Change-Id: Ife9631c353ca5b8160019eb26d0fe781a5c2179f
2017-02-26 16:53:32 -05:00
Jarrod Johnson 42b6807840 Add referer header to https requests
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
2017-02-23 08:55:48 -05:00
Jarrod Johnson 957c6c971e Fix issues with idle behavior
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
2017-02-08 12:51:13 -05:00
Jenkins d1318616c6 Merge "Provide more consistent attributes" 2017-01-13 14:11:30 +00:00
Jarrod Johnson 69d786c151 Provide more consistent attributes
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
2017-01-12 07:26:37 -05:00
Jenkins 8eb72b9df1 Merge "Only complain about Device SDR if no SDRR" 2017-01-11 16:35:59 +00:00
Jarrod Johnson f81a934fe4 Only complain about Device SDR if no SDRR
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
2017-01-10 08:59:50 -05:00
Jarrod Johnson 17fe93826f Refactor Lenovo OEM support
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
2017-01-06 12:51:27 -05:00
Lucas Alvares Gomes de59a8e2e7 Add base for unittests and fix docs
Change-Id: Id130e6ea29523fd46ff795be1219016029127945
2017-01-05 15:52:14 +00:00
Jarrod Johnson 2963ecf466 Correct offset of a capability bit
Specification has corrected an internal bit offset,
so our implementation must adapt.

Change-Id: I62cf562cfd80b0bc680f41881bf64e421f503432
2016-12-07 14:25:50 -05:00
Jenkins 369f8440fa Merge "Raise IpmiException on error checking power state" 2016-12-01 18:14:26 +00:00
Jenkins d77b4caa75 Merge "IpmiServer to allow using IP version 4" 2016-12-01 15:13:07 +00:00
Lucas Alvares Gomes 8322cf4628 IpmiServer to allow using IP version 4
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
2016-12-01 08:35:12 -05:00
Lucas Alvares Gomes 1e6809fec9 Improve .gitignore
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
2016-11-30 17:02:33 +00:00
Jay Carman b8ceb224f9 Raise IpmiException on error checking power state
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
2016-11-16 16:17:31 -06:00
Jarrod Johnson 4fcc75899e Consolidate IMM date string parsing
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
2016-11-15 10:45:26 -05:00
Jarrod Johnson 2cfec95558 Ignore KeyError on delete of missing sensor
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
2016-11-04 09:45:48 -04:00
Jenkins 563b15decf Merge "Implement IMM remote media mount" 2016-10-31 13:31:17 +00:00
Miles Gould b6cac4cc46 Fix bullet points in README.md
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
2016-10-28 13:57:44 +01:00
Jarrod Johnson fd92a734be Correct mistake with image name abbreviation
It was incorrectly trying to abbreviate names that
are already short enough, causing a problem for certain
name lengths.

Change-Id: Iebb977bef3db0131cad3d923f5943f9bfa9247a6
2016-10-27 14:11:13 -04:00
Jarrod Johnson 932087b5a6 Implement IMM remote media mount
New IMM firmware provides a mechanism to
specify a mount by URL.

Change-Id: Ib8575bd9fe6e81f0a3880f39a319e4fc53d15aef
2016-10-27 08:43:17 -04:00
Jarrod Johnson a27d28fb0a Recognize and use CSRF token
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
2016-10-25 14:22:29 -04:00