commit 09f2b137935b1522834edc946d46a1b04f366111
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Wed Apr 9 15:05:37 2014 -0400

    Allow pyghmi to send break over IPMI SOL
    
    Implement sending break over SOL.  A BMC may elect
    to reply to this with a NACK saying 'break happened',
    so have code treat that as 'ACK', since that was after all
    the whole intent.
    
    Change-Id: I84c85962fd80901bdef3fa22c3df4936420fb108

commit ff00327647106ec06a2800449b1b7d4c84b30cad
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Apr 3 11:24:59 2014 -0400

    Switch from PyCrypto HMAC to standard python hmac
    
    This seems to be a wash performance and functionality wise.  It does however
    mean one less segment of code that incurs an external dependency.
    
    Change-Id: I6691d95172d7d83eae4b4ed1265ba398b220f501

commit 82883c4e1011c16618196c8ccba3aee1c289afbd
Merge: bf7dd29 67e7d84
Author: Jenkins <jenkins@review.openstack.org>
Date:   Tue Mar 25 19:07:52 2014 +0000

    Merge "Fix missing delay_xmit argument breaking power wait requests"

commit bf7dd29a2d59e759325d7270acf0b493f2cf8380
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Mar 25 14:26:13 2014 -0400

    Tolerate unicode strings as username and password
    
    In case of unicode username and password values, just utf-8 encode them.
    Here, the encoding shouldn't matter much.  All parties must agree
    on encoding, but UTF-8 is fine.
    
    Change-Id: Ia4a8a4fcbc5ea9b12ee45ebcc566abe4713b544a

commit 67e7d84abd2b941f48fcc2ec9e2d342d55da0a68
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon Mar 24 14:08:52 2014 -0400

    Fix missing delay_xmit argument breaking power wait requests
    
    The 'command' variant of raw_command did not recognize the delay_xmit
    parameter.  When code was changed to go through self instead of through
    session, this facet was missed.  Fix the problem by adding hook to
    pass through that information.
    
    Change-Id: I6c5a13940e753c4300b18500bad60f216e08ad43

commit 44370a9a0ba2d38d3828a886a0d482dbea0e9fef
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Mar 6 16:53:07 2014 -0500

    Fix race condition in requesting delays
    
    When something other than the IO worker thread requests a delay,
    there was an interval between pending requests and the new
    deadline being calculated during which the non-IO thread would
    erroneously consider the old rather than upcoming deadline.
    Address by creating a worst case deadline prior to evaluating
    pending requests.
    
    Change-Id: Iabde555eb81d2155f4bc4562f0b3a209e1be42a9

commit 343deca5d9bbf6e01f41c8492fd687040dd51115
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri Feb 14 09:34:30 2014 -0500

    Fix race condition on sending data
    
    If data was sent prior to the activate payload response, the code
    to calculate the maximum chunk could not suceed.  Correct this
    by having sent data accumulate as pending until connected state reached.
    
    Change-Id: I7c9aed67209b3526bd10cafeee0bae6b1b0ab85f

commit 9eb13b9f8c8621565641ed64aaa4eb89f31a28de
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri Feb 14 08:34:05 2014 -0500

    Fix large paste to SOL session
    
    While pyghmi was recording the maximum size the BMC advertised as accepting,
    it was not honoring it.  Correct this by having the sendpendingpayload function
    only send the first 'self.maxoutcount' bytes.  This actually turns into a loop
    because the ACK coming back for the chunk of data triggers a send of pending
    data, which includes the leftovers of the last attempt.
    
    Change-Id: I8e443e08a6eb4ed89eb74412cca92e2138cf9d00

commit 6e58eae3016187f7732cbade4066952f0c8b520a
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Feb 6 10:04:54 2014 -0500

    Move previous fix out to command and console
    
    console at least needed the assignment to the session to occur
    prior to its callback working.  Move the responsibility of the
    mandatory loop iteration up a layer so that pyghmi won't break,
    but calling code won't have to worry about this either.
    
    Change-Id: I6711acf97574581bb389259563e82e4430bb3f98

commit ea810dfdda21502cae887df44264fdc73284bc88
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Feb 6 09:53:42 2014 -0500

    Fix session reuse stall for async usage
    
    Previously, calling code had to manually force an event loop iteration
    after making an asynchronous session creation request.  Address that
    by making a non blocking iteration request happen automatically.
    
    Change-Id: I64f814401cb5ac397ac9ca4a1ae1d434976a2b01

commit e9000313f2cef935edd3eb9a9c57128995b5c0be
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sun Feb 2 11:46:37 2014 -0500

    Make pyghmi tolerate arbitrary threading models
    
    When calling from various threading code strategies, pyghmi
    would cause confusion and eventlet to print debug output.
    Create a dedicated IO thread to isolate the shared socket
    usage from calling code thread behavior.  Currently, it still
    requires that calling code loop on wait_for_rsp to assure session
    liveness and/or to do SOL.
    
    Change-Id: I66164adbfd867200af53269553210a70a0619a85

commit e4c76de0829c06070481c1b0e2667042bc8ee67b
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sun Feb 2 09:23:30 2014 -0500

    Do not count empty SOL data as keepalive data
    
    If the console layer sends an SOL payload with zero data (which is
    valid to do) the session object would treat that as keeping the
    session alive on the BMC side.  Many BMCs do not consider empty
    SOL payload packets toward session activity.  Accomodate by having
    the keepalive deferral not be triggered by such packets.
    
    Change-Id: I8d278dbc48fae296c754ce9bc8f05bc92b560374

commit 02848d66b7694986465ab44e4d5f7717fcdae956
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sat Feb 1 19:02:18 2014 -0500

    Use different timeout values for logon and retry
    
    When establishing a session, there is not much to lose.
    If three get channel authentication capabilities fail, it's
    almost certainly because it just isn't going to work (bad IP,
    rebooting BMC, something like that).  However, once signs of life
    have been displayed, the likely cause of an outage shifts toward
    a transient network outage (e.g. link speed negotiation after
    rebooting a shared nic configured solution).  Particularly with SOL,
    there is a high chance of inflight data worth trying to recover the
    session to get.  For that we go to tolerating up to ~20 seconds of
    outage.  Much longer than that and we are pretty much certain to run
    afoul of BMC timeout anyway, so no hope of withstanding something like
    spanning tree with blocking by default, but it can withstand moderately
    well configured networks.
    
    Change-Id: I783d13eaee4360cfd780e28b2b4cbf77cc980945

commit 79efa5e1b49e246885abe565da8e455f52dc0b51
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sat Feb 1 10:17:58 2014 -0500

    Fix Console write race condition
    
    If a caller tries to send data immediately after getting their
    Console object, they can trigger a problem since the session is not
    yet established.  Correct this by spinning in send_payload until
    session is either established or fails.
    
    Change-Id: Ia3a2582563d5385212202c036c0716a3cf36b80c

commit e0f34700ec7b9f39f26fcd315a77f567750b9ebc
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri Jan 31 16:41:31 2014 -0500

    Reasonably relay IPMI errors to console handlers
    
    Previous changes resulted in construction of a new dict nesting the
    dict of interest.  Correct this by passing through dict rather than
    embedding it within another dict.
    
    Change-Id: I77969097f530c866cb00d07844393676ac254907

commit 46228d23a1af36a2ae2c83bd1b7ca74e633328f0
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri Jan 31 15:23:34 2014 -0500

    Allow special handling to preceed generic handler
    
    The IPMI session layer now, with more constants defined, catches the SOL
    error and populates 'error' message.  Move the generic handler code
    to come after the specific condition handler to allow things like forced
    sessions to work as expected.
    
    Change-Id: I62ab5fc16a9af631317eff78b8445b06a76b56d8

commit ed220d6ebdf731d3fb5683a7c669f7deaf5ed7d4
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri Jan 31 15:15:23 2014 -0500

    Fix exception if login times out
    
    If a client attempts connection to a BMC that is not there,
    unusual KeyError would get thrown.  Correct this by only
    attempting to deregister the element if it is registered.
    
    Change-Id: I3febb92ae8bc40c2847758797f179e85d58d97b1

commit c18693ab3d027b304b4b8d16c07e2a4aada8d895
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Jan 30 18:52:08 2014 -0500

    Detect and notify Console users of disconnect
    
    If a session becomes non viable, alert the calling code to the condition.
    Calling code needs to be able to recognize non string data if registering
    a callback for this to work.
    
    Change-Id: I0bb921c5b88edd1ca2e4ba2594e28e9e0ce5ca81

commit d4f856ebb16f20a6ad929aa923de597a38fd14c4
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Jan 30 16:09:46 2014 -0500

    Detect broken sessions
    
    When a session is broken for whatever reason, make it possible for
    a long running user of the library to reasonably recover by
    having a broken Session object detect the situation and disqualify
    itself from the mechanisms to reuse sessions.
    
    Change-Id: Id63c3490d6bbeab7d5de7f92c1eae012a648c416

commit ff3d56620d77555c87759647c3b2c5d8d404711e
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Wed Jan 29 15:34:47 2014 -0500

    Fix keepalive behavior on broken Sessions
    
    If a Session object is broken (e.g. BMC goes away or network outage),
    then its keepalive timer would cause an application to be starved
    of being able to do any IPMI related work.  Address this scenario
    by having the instance deregister its keepalive at the point it
    reports itself as broken.
    
    Change-Id: I6b7af8ad03759c676110fb4f0b7bfa41642152f3

commit ba5bbe1fc47517fdd30b243f589a31a8465d20ad
Merge: 3cd40c5 c1d4252
Author: Jenkins <jenkins@review.openstack.org>
Date:   Fri Jan 24 14:57:05 2014 +0000

    Merge "Add BMC bridge request extension"

commit 3cd40c5f1c839bbac588aeb2032d8276faa890ae
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jan 21 17:32:35 2014 -0500

    Add support for discrete sensors
    
    Previously support was added for 'analog' sensors.  This incorporates
    support for 'discrete' sensors.  Those are sensors without a particular
    numeric value, but a set of states to assert.
    
    Change-Id: Ia8087ded8699f6f59853ffc93cc1842f8867faca

commit c1d42527434df47d135b7e5270bcf5b20a1659f4
Author: Fengqian Gao <fengqian.gao@intel.com>
Date:   Thu Jan 9 16:29:12 2014 +0800

    Add BMC bridge request extension
    
    Support BMC bridge request, users can specify
    target slave address and channel number for the command
    
    Change-Id: Idf4c4567013e769ab71350db4cea947b2dc820ed

commit 7ac880f3f8b412831f88de78ee3dd323b5e54d7b
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon Jan 20 18:31:40 2014 -0500

    Add 'get_health' to Command class
    
    Provide a convenience function that summarizes the overall health
    of the managed system based.  Currently, it just enumerates all
    SDR indicated sensors seeking unhealthy readings.
    
    Change-Id: Ifce6d05623acc86b6bf42ceb57824b65eefa36ae

commit fe7539ab8303dd2a727d8647f525e7b879e1a4c9
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon Jan 20 15:48:19 2014 -0500

    Add 'get_sensor_data' to Command class
    
    Have Command class provide access to the sensor data
    as enabled by the SDR commit.
    
    Change-Id: I2eede764597cff74409370230cc5d3f120c4ed65

commit 3a4338365b82f03c2d7c635d4082b0b96fe18bf1
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Jan 16 16:06:36 2014 -0500

    Add support for retrieving SDR data
    
    This patch implements SDR retrieval and the foundation to use the data
    to translate raw sensor reading data to usable information.
    
    Change-Id: Ic77fcde6a283a2ee7745a9c159038d2655911b0a

commit 0897e0d408df880974f362cb864d7e7fbdd444c9
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri Jan 3 13:39:20 2014 -0500

    Remove surviving 'callback' code
    
    Having previously forgotten about the callback option in logout, programs
    could generally not actually complete.  Fix it so that logout() works as
    intended.
    
    Change-Id: I04394821646074c734438b7de6970c8282e2c761

commit 9290111ba7a8145140fe4fdd0e475fde00db06b3
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri Jan 3 11:53:53 2014 -0500

    Remove callback from session.py
    
    In the private session module, there was originally a thought
    that a callback model was going to be the path for code to implement
    interleaved execution.  However, since that point a coroutine pattern
    has proven to afford the same benefits with simpler looking calling code.
    With this in mind, remove some of the disused code in order to make
    the session module a little easier to follow.
    
    Change-Id: Ice697df409dd188d7e3361d278f8b1ce1358a419

commit 7dc8d5f5323ca18c3edba32ea94e4412e6638459
Merge: 9157628 41c549d
Author: Jenkins <jenkins@review.openstack.org>
Date:   Fri Jan 3 16:46:14 2014 +0000

    Merge "Remove callback usage from console.py"

commit 9157628f019e00222db9616e10d7b31186475ef6
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri Jan 3 10:33:59 2014 -0500

    Add errors for activate session response codes
    
    Change-Id: If29da4f6ae0acdfb40077aeb1a5b2f276fa00aa1

commit 41c549d0e91f214e75cf7f45fbeb10ac75abbf28
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri Jan 3 10:22:30 2014 -0500

    Remove callback usage from console.py
    
    In command.py, settled on coroutine structure as the sole design
    pattern to support.  To be consistent, abolish the use of callback
    from console.py as well so that SOL does not needlessly act so different
    from command.py in the scenarios where it can act the same.
    
    Change-Id: I7a26a7c9b929ef7e63ca23c595a28baeb7f1e1b9

commit 352a2faf8a0f596b3aa643eba50b0fc7c9302db0
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Oct 15 19:45:32 2013 -0400

    Fix some reentrant scenarios
    
    If a command payload is pending, fix calls to raw_command by
    deferring instance modification until the last command was settled.
    
    Fix a deadlock scenario where packet transmit gets blocked by
    waiting on incoming packets that will never come by avoiding
    calling out to caller custom handlers which might expect to be
    submitting new requests during transmit.
    
    Fix a problem if command is requested while awaiting for an SOL
    acknowledgement.
    
    Change-Id: Ia352566819cce06c6e4e5279afeb6191838e0488

commit 5a1182042d1dd0d84e2d457142e7b7731521ad66
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sun Oct 13 19:44:03 2013 -0400

    Have ipmi session objects reuse themselves
    
    When multiple session objects would be created by calling code,
    avoid creating a conflict on bmc_handlers that would result
    in trying to use a corrupt instance.  Either it reuses the
    existing object, or else it detects that some parameters are
    different and erases old pointers to the now defunct instance.
    
    Change-Id: I883934ae984b2ad0369458bea15f62862c6e97ca

commit 9dadfe0efe1e2a71b54838641c5bcc972b739f8b
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sun Oct 13 15:54:07 2013 -0400

    Stop waiting on logout during atexit
    
    During atexit time, do not wait for BMCs to acknowledge logout.
    This is generally a waste of time and can cause things like eventlet
    to complain since atexit won't exit in a coordinated way with
    greenthread context
    
    Change-Id: I295215614ee6a20ce63f5a9ac37bbe3d9b2d9848

commit b86e197210ac37dd61a96fe15985f6ae31b6c107
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Oct 10 19:26:38 2013 -0400

    Change SOL code to not send empty data to caller
    
    If a SOL target sends a packet with no new data (e.g. spurious retry), do not
    bother the caller with such empty data.  It's a waste of their attention at
    best and if the caller is doing something like trying to write the data
    straight to a TLS socket, it will trigger EOF exception.
    
    Change-Id: I1d751331bc0fa0087bf671de12507b7fe011f5fa

commit ffe493df0f13f45963268d68b349c9dbf809a39a
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Sep 24 09:49:53 2013 -0400

    Use distinct exceptions for many cases
    
    Caller is likely going to want to catch certain conditions.  For those,
    use more specific exception classes.  Exceptions indicating either TODO
    or usage errors are being left as 'Exception' for the time being.
    
    Change-Id: I4d68a2dbc394b534d54586b9f770160c1409f720

commit ccac817f2beaabf252e762238eb86f9b3e034df5
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sat Sep 14 21:36:44 2013 -0400

    Enhance filehandle registration
    
    Previously, pyghmi only could have file objects registered.  Accept
    and adjust as appropriate to accomodate plain int filedescriptors.
    This allows, for example, os.pipe() construct to be hooked.
    
    Change-Id: Ie5e81a2276c68e9235d373d4a662f7b1aef153f5

commit 35b50fb705f11eadf71b35c5065c220fdbf83e8b
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sat Sep 14 10:03:56 2013 -0400

    Fix pyghmi behavior on BMC NACK
    
    When BMC sent NACK, pyghmi incorrectly attempted to construct new payload
    by concatenating a tuple and str.  Fix by converting the tuple to
    str prior to sending.
    
    Change-Id: Ia07384651870bf01e7dc24757e1e00018ab84556

commit 781a7829be26bee0a9a78ca6ff49e0436be5a3f7
Author: Monty Taylor <mordred@inaugust.com>
Date:   Fri Sep 13 11:21:12 2013 -0500

    Update from requirements
    
    Trying to remove usage of d2to1 - it can cause breakages.
    Also, had to fix hacking 102. Turns out it expects copyright headers in
    comments, not docstrings.
    
    Change-Id: I3494349ffe2d4cba9c8bcb73408d60bbc12eff5e

commit 317417987faeb62018150b7c8fa99e0373c205e0
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Sep 12 10:08:14 2013 -0400

    Correct concatenation of string and int object
    
    Straightforward change, a mistake was made with a string and an int
    was concatenated.
    
    Change-Id: I96de0f32b387e524c90d42acb5dcf6c808448b14

commit bdbb6aa018784c398a9cd4d6c2662b9c9824941b
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Wed Sep 11 16:32:27 2013 -0400

    Expose wait_for_rsp class method via public classes.
    
    In complicated uses of pyghmi, it becomes useful to call into the
    otherwise private event loop iteration.  This exposes the
    wait_for_rsp method so that it may be consumed without violating
    the expectations of private.
    
    Change-Id: Iee64615f0577b00895f8c3db25676c877107b0be

commit f24395bbee4dbb8269c6817febf7be489e37d838
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Wed Sep 11 15:21:36 2013 -0400

    Fix mistake with external filehandle and solconnect
    
    In changing to select, the nature of the return value failed.
    When using poll(), we got file descriptor number.  However select
    provides the object and so we have to consult the fileno() method.
    
    Change-Id: Ic525b315024b164eed22238ad1e4a89eed0fcf0c

commit 5832db6a303da1c4a5acdeb49da24b335624c555
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon Sep 9 15:02:25 2013 -0400

    Change from poll() to select()
    
    poll is not available in all platforms.  Additionally, eventlet
    does not handle poll in a monkey patching scenario.  Use select()
    as the greatest common factor.
    
    Change-Id: I170d6efb1636249df4b7ed42eac6378ae317cb35

commit 5c5c6770ea3cb704297602a3c0aaf0887a8f6917
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon Sep 9 16:49:16 2013 -0400

    Have callback recognize any callable
    
    Previously, callback had to be a function.  This misses a lot of things,
    notably instance methods.  Change to recognize any callable.
    
    Change-Id: I9d2a00fe53f7e8039f0badeb4af0fdd3c6339b89

commit ef22636766ea43837e6e7fc760f76ae1f7977b1d
Merge: c13a5a3 c2ee99e
Author: Jenkins <jenkins@review.openstack.org>
Date:   Thu Aug 22 21:20:30 2013 +0000

    Merge "Add function to send sol data"

commit c2ee99eb0d3c0869dfe5cfc8535b1f25e6781655
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Aug 22 16:50:07 2013 -0400

    Add function to send sol data
    
    In the case of using function callin/callout, the console module was missing
    a callin.  Correct that omission.
    
    Change-Id: I233b43eadf115ad617958148878b96f38bff1971

commit e6d0e2ae0dbd8ded9c843312a40b2f41d62f6875
Merge: 3ed2ef8 cfe88ab
Author: Jenkins <jenkins@review.openstack.org>
Date:   Thu Aug 22 20:08:25 2013 +0000

    Merge "Finalize rename to pyghmi"

commit c13a5a375da845af9684a4997dd19d15932efb67
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Aug 22 15:57:03 2013 -0400

    Add support for non standard ports.
    
    It is possible and in some cases required for an implementation to deviate
    from the IPMI standard port of 623.  This enables the library to actually
    support that case.
    
    Change-Id: I62e322410924153cebde9827d7ba0d0583aa1d83

commit cfe88ab8756d14e4d53583b47ba5ff4a445a1d8c
Author: Monty Taylor <mordred@inaugust.com>
Date:   Sat Aug 17 22:29:14 2013 -0400

    Finalize rename to pyghmi
    
    Change-Id: I11999d644c6f583a458eaa504b46f1b0eba24b21

commit 3ed2ef8494cc77ab3fd5f2ffb847224d0f817040
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Wed Aug 14 14:48:19 2013 -0400

    Fix raw handling by ipmictl.py
    
    The test harness was incorrectly throwing string values at the library.
    Correct that by explicitly converting from hex string to int.
    
    Additionally, command.py was failing to pass data through.
    
    Change-Id: Iceda4c3b4a382992d445f90dfbc19f6c75b528df

commit 04a9b89d15e6e3305a5d1ddc167e8c77aefb6356
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon Aug 12 16:10:00 2013 -0400

    Rework set_power handling of errors and noops
    
    set_power failed to raise when error encountered.  The behavior is
    amended to be consistent with other functions.
    
    set_power requested on/off state even if system already was in requested
    state.  Change to simply report success in that scenario.
    
    Change-Id: I6feb8f4384705136a5ab1fae0899ea27b2d3511c

commit 7e4f5a381fd44931061db9301bd0d626f1eb6ad0
Merge: 5ac560d ebbf8c9
Author: Jenkins <jenkins@review.openstack.org>
Date:   Thu Aug 8 20:34:50 2013 +0000

    Merge "Rename package from python-ipmi to pyghmi"

commit 5ac560d7209b74462c590efbbf4005c91f834947
Merge: 939ebea c0f4959
Author: Jenkins <jenkins@review.openstack.org>
Date:   Thu Aug 8 20:34:38 2013 +0000

    Merge "Change long timeout to select() from poll()"

commit ebbf8c94e4e65550ea2b04e1ffadd8a1a4164b83
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Aug 8 14:28:40 2013 -0400

    Rename package from python-ipmi to pyghmi
    
    Some have expressed a concern that ipmi is both too generic a term
    and too limiting in scope.  Change python-ipmi to pyghmi to more
    easily allow the project to be specifically be referenced and denote
    the likelihood of non-ipmi protocols being supported
    
    Change-Id: I9c96f2154050a2970fc217e0eeae733605a38bde

commit c0f4959ed766b6b6341f315d3c3f33848468b16a
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Aug 8 14:19:09 2013 -0400

    Change long timeout to select() from poll()
    
    Change from poll() to select() for the potentially long wait in ipmi
    event loop.  This is to facilitate interop with being monkey patched
    with eventlet, as eventlet does not currently monkey patch poll(), but
    does monkey patch select()
    
    Change-Id: I8d6f42193ee82e2c5de7ad112232c2c77ef78825

commit 939ebea0f38231f4180ebd59f210117961717a59
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Aug 8 13:31:36 2013 -0400

    Enhance wait behavior of set_power
    
    Previously, wait would always be indefinite and act in many ways like
    a busy wait.  The check for completion now takes one second between
    every check.  The default behavior now goes for 300 seconds, but
    wait can now take an int to indicate a different preference by the
    caller.  300 seconds may seem like a lot, but the 'softoff' request
    in particular suggests waiting for OS shutdown process to complete.
    
    Additionally, some bugs in the retry logic were noted in the process
    of having the retry timer drive the delay and are corrected.
    
    Change-Id: Ibe34e87c2a58f13981d60e5f80b4b636e67ac3f9

commit 7371a58aba5f9833bbf6778a4508f2ad25d71c88
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Wed Aug 7 10:01:16 2013 -0400

    Rename to pyghmi
    
    It has been expressed as a concern that 'ipmi' is too generic a name.
    Additionally, it is also the case that non-ipmi capability is likely
    to be incorporated as it goes along (e.g. Enclosure management and
    virtual media are frequently not IPMI based).
    
    Move existing content under the 'pyghmi' namespace.  pyghmi stands for
    'python general hardware management infrastructure' and is pronounced
    'pygmy'
    
    Change-Id: Ib549a9f5b7dd549c7dc5ddbab251a2e06c572e41

commit b985624a4bc1de4e59a3b23fc42ea7e534a0d1dc
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Jul 25 14:19:09 2013 -0400

    Remove callback arguments from most functions.
    
    After some contemplation, I realized that given the underlying behavior of 'wait_for_rsp', that
    synchronous and asynchronous calls play well with each other.  The pattern of considering an 'onlogon'
    function as running in a sort of greenthread works well and leads to much more comprehensible code
    for the average person.  While removing those arguments, the module contents were reorganized to
    serve as an example of how more straightforward code written in this fashion may be.
    
    Change-Id: I9c83660e4d3c68ad8ae0c016a3377b2a0e7ee6ec

commit 86a2d39db7e93fbb6211e89276039135ec7c20a5
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Jul 18 16:20:44 2013 -0400

    Change session timer to monotonic when possible
    
    Previously the ipmi session was using time.time().  This means
    that retries and keepalives could be thrown off by things like ntp
    or manual time corrections.
    
    Ideally, we'd use the baked in time.monotonic(), but that doesn't exist
    aside from python 3.3
    
    Change-Id: Ia00026cef6df214f9463909309de44767c3752b5

commit 0e8ca338423d805330bf924d5e11de57740a327c
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jul 16 13:37:09 2013 -0400

    PEP8 compliance
    
    Change instances in code where flake8 complained
    
    Change-Id: I0b125fcff39024f9d4bf3c4c26a863efd0fa5cba

commit 51cf01f6c9ffba003f4bbbab2a9b9eb89530a1eb
Merge: 9dd2c95 35fb5ce
Author: Jenkins <jenkins@review.openstack.org>
Date:   Tue Jul 16 17:46:10 2013 +0000

    Merge "Add raw command to ipmictl"

commit 35fb5ce4b0062b5d92cf2cff7ab29f7bc2423aeb
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jul 16 10:59:45 2013 -0400

    Add raw command to ipmictl
    
    Enable raw command for example utility
    
    Change-Id: I44d71b5c4cab57e9465fabb2482a78baa505895d

commit 9dd2c950a7b07ad4998c10abd8b53b5d7e4899f5
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri Jul 12 13:58:07 2013 -0400

    Add session keepalive
    
    Assure that a live session shows activity at least once every 25-29.9 seconds.
    The interval is randomized to mitigate risk of some synchronized activity
    bringing on a wave of activity all at once.  The spec indicated timeout is
    'about' 60 seconds by default, but an implementation could lower it to 30
    seconds within reason within the constraints of the spec.
    
    Change-Id: I74dc78757b11571c23cb309c99eee667787ffc79

commit 02e353f2fb699316c35dfb9e7002c82f6e474e45
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jul 2 17:03:24 2013 -0400

    Add SOL support
    
    SOL support is added in a manner that is actually functional
    
    Change-Id: I3f83e06b27a0d44038ac6e6afcd4f8af1c534946

commit a7b4b4a71d80a85faebe8c726c3fc5a90bd9962b
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jul 2 13:35:27 2013 -0400

    Add more constants to ipmi constant list
    
    Allow use of the more helpful names for net function codes in ipmi
    specification
    
    Change-Id: I3c7bc71e5df1936fbeac6fcc65e144e1b52ea68a

commit e9ef542b65a42c911909c50f7a3a0c4070ab9b9b
Merge: e0e39bd 6360f2c
Author: Jenkins <jenkins@review.openstack.org>
Date:   Thu Jul 4 16:56:11 2013 +0000

    Merge "Correct spelling mistakes"

commit e0e39bda9a4cc9a9b1973dd9546b1d11997348ff
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jul 2 13:29:26 2013 -0400

    Fix errors after git repo transition.
    
    I realized that I had never pushed __init__.py for private.
    
    While doing tests locally, I noticed that the pep changes broke at least one
    place in code, correct that.
    
    Change-Id: Ia31cb8a75a7109a6d002524e08ef335e1c5018d4

commit 6360f2ca9e9d3ac8b961bc3bf818ea7aee18fcc5
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jul 2 13:16:16 2013 -0400

    Correct spelling mistakes
    
    Change-Id: I752dc17e8ae3e354253614bdbd5277ca1fd67469

commit 016326795bf19e34c73f296102fe14dec6fba865
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jul 2 11:16:57 2013 -0400

    Rename _pack_payload to send_payload
    
    Rename '_pack_payload' in private module to 'send_payload' as it is more
    descriptive of what is happening and will be called by console.py
    
    Change-Id: Ifa70d269c8a1e37cc5b6466845931f22cd97d6c3

commit ca22a48de5a62a254f534f1081e03dda04918349
Author: Devananda van der Veen <devananda.vdv@gmail.com>
Date:   Tue Jul 2 06:09:21 2013 -0700

    Fix all pep8 errors except E128 and E501
    
    Ran autopep8 on the four .py files in this module.
    Manully fixed many additional pep8 errors as well,
    Turned some long-line-comments into proper NOTE lines,
    but there are more to do...
    
    Change-Id: I657ba037863860ec3956150931c2c0e41085bd63

commit 08d2e54d6871fcb4ae588e9a562cca0b9a311cba
Author: Monty Taylor <mordred@inaugust.com>
Date:   Sun Jun 30 14:06:53 2013 -0400

    Align to OpenStack Build Standards.
    
    Rearranged Sphinx.
    Put project under PBR control.
    Added tox file.
    Added .testr.conf file in anticipation of testr testing.
    
    Change-Id: I55180a6a3d224816c82999bf66156c7874786b17

commit fdca1fc1999a07b468ff9a1546bb599bc92e4a57
Author: Monty Taylor <mordred@inaugust.com>
Date:   Sun Jun 30 13:58:19 2013 -0400

    Added gitreview file.
    
    Change-Id: If8789bb129a45ad747e596a479a6a4466a5bafe0

commit 7eec73261d0e61214d6437afb32010592ee060bc
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri Jun 28 10:35:41 2013 -0400

    fix setup to include the private parts of the project

commit 0a01fe446d57671293b35baa19e75622af021356
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri Jun 28 10:31:43 2013 -0400

    Reorganize pieces into 'private' to suggest to consumers the bits tehy need not think too hard about

commit 284621feaf87505d01688331d91576b99f1bf5ab
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri Jun 28 10:12:57 2013 -0400

    Change to setuptools

commit f0e36d8027bd96002b14be3f210c62a2d9193e6f
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri Jun 28 10:10:28 2013 -0400

    Change requires to install_requires

commit f333dbff8b8dc649c5aad9cd941eedd33ca63d54
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri Jun 28 10:01:40 2013 -0400

    Attempt to indicate pycrypto dependency

commit bc198382682ec2312a431bad7bf36f06fe5daaa3
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Jun 27 15:56:19 2013 -0400

    Reorganie things and add a setup.py for fun

commit 05d3d05695fe5fa6f273ddab481f7bef885a28fa
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jun 25 13:38:41 2013 -0400

    More style changes

commit 147381a7e37c5f389713680f3657065cf1fd2d22
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jun 25 13:11:14 2013 -0400

    More cleanup, correct some syntax errors encountered trying to meet line length

commit 1dde7b8a7050d104650862391b1851ec03304335
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jun 25 11:44:57 2013 -0400

    More style reworking

commit ab1b9815478582fc04b3f5024bee7bfd837b09f3
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jun 25 11:23:24 2013 -0400

    Stylistic reworks

commit d8c7f9d9037664d7b14da92449eaa6acae715110
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jun 25 11:16:07 2013 -0400

    More stylistic changes to ipmi_command.py

commit 4973d577e340aca75e50086e383fb495340240a0
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jun 25 10:43:02 2013 -0400

    Rename ipmi_syncexample to something less tounge twisting

commit eeb6cb255d4b1105bb23ab120d73613f695f9e4d
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jun 25 10:39:58 2013 -0400

    Rework docstrings

commit 41141ea467a3ba51cec53e75dc1d0a880d388c7b
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jun 25 08:25:06 2013 -0400

    Reorder imports

commit 552ae49c58d81338c4861272c2cf110505de911a
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jun 25 08:20:16 2013 -0400

    Change one conditional to perhaps be a bit more readable

commit d660073f77dc07544ffb7baffe8b2bbb152bfce6
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jun 25 08:17:50 2013 -0400

    Add name to TODOs that I put down

commit 7517bce5f6ed862278fc109894d31ad8dc80b92b
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon Jun 24 14:37:57 2013 -0400

    Add LICENSE excerpt to each file

commit 3afd2e17d3057b8206ad74a30f8afea6d01862f7
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon Jun 24 14:15:39 2013 -0400

    Place project under Apache license 2.0

commit a38894664cc5513f961c7998d8a0b9416d426b70
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon Jun 24 13:43:15 2013 -0400

    Get acceptable copyright message in place

commit bef7a29e126f4469c734d125c26fbbd13454bd13
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jun 18 10:00:21 2013 -0400

    Flesh out documentation

commit 5fb6a95a9daed4411fe3488e32085c551cdc527d
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jun 18 09:15:50 2013 -0400

    Add sphinx 1.0 structure instead of older version

commit 2212e11d344098c4a32b29f72d0a790adbb9a2aa
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jun 18 09:13:28 2013 -0400

    Revert "Add sphinx doc generator bits"
    
    This reverts commit 5c04ffb265cd99b66534f2a2668f5ff31448c26b.

commit 5c04ffb265cd99b66534f2a2668f5ff31448c26b
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jun 18 09:10:04 2013 -0400

    Add sphinx doc generator bits

commit fff7b3bd57fe94d7ac450da89d9a241ddc5c2f06
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon Jun 17 16:55:44 2013 -0400

    Add an example chunk of code showing how to code in a synchronous way to the python library

commit cfc6d6ec156c61789fb2d2ba2055c607f4d61957
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon Jun 17 16:26:57 2013 -0400

    Add set_power, with wait argument to not return until new state confirmed

commit 5c1713d792d4a4b84639d87ad2f8545b0a835993
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon Jun 17 15:02:11 2013 -0400

    Add retry/timeout behavior to library

commit 1ecd7c2146786fed3ff74f3069a6e40746b05f2a
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon Jun 10 15:49:24 2013 -0400

    Have get_power coded more similarly to get_bootdev

commit b7e27470ccfdab50d1613efd55821d3e6abeee37
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu Jun 6 17:04:49 2013 -0400

    Add boot device control functions

commit 8c68b1e3ef95f0e10a2260722857277d2dc1b15e
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Tue Jun 4 13:16:05 2013 -0400

    Put IBM copyright into the files

commit 2f4a85711893c2ba27b592b14fcf223810efcf2f
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon May 20 11:17:10 2013 -0400

    Add a convenience wrapper to do the higher layer simple commands

commit 785e712763e9d994f39cef43195ba931ff51f124
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon May 20 10:49:59 2013 -0400

    Fix up error status situation

commit da9f801c1f834453be86a928b4beaa3bfada4459
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon May 20 10:44:12 2013 -0400

    Clean up ipmi_session a little bit

commit 74f3bf592f93a5ed07bace9fac7e5a01d8e73aa5
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Mon May 20 10:29:01 2013 -0400

    Do some rewording

commit c8ac83ccccf8d069a0f60117f1d2b5a7c0879a60
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sun May 19 18:51:42 2013 -0400

    Fix the integrity pad calculation (shame python doesn't have a 'use strict')

commit f44ad79391b7ddaf4ee62d310137d46853de43e8
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sun May 19 18:26:42 2013 -0400

    Remove developer prints

commit 7c44577b6c725f6bfa50925e3d6f115fda8d3cf8
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sun May 19 18:20:27 2013 -0400

    Fix decryption... mystery remains as to why logout and only logout seems to fail if aes is not enabled in ipmi 2.0 land..

commit d6db94795e0ad6d4b7616542f010556fa39b15ae
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sun May 19 18:02:57 2013 -0400

    Have IPMI2 work for unencrypted, still sorting out decryption... encryption seems to work, but decrypting the response...

commit 40509f59cf4fb102e51bac2446a8d1bb8a6dea94
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sun May 19 17:23:36 2013 -0400

    Fix problem where the data from bmc was not being integrity checked in 1.5

commit 86ebe9790d42d9dfdd23d1d6599f138a532e707c
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sun May 19 17:14:22 2013 -0400

    Fix problems with k1 and k2 key generation and HMAC on outgoing

commit 4a1a43bbe973622b1fd277e5cd131484987e7345
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sun May 19 16:28:46 2013 -0400

    Almost working IPMI 2.0 support.....
    disable encryption to facilitate/narrow debug...
    currently integrity algorithm is apparantly failing to pass on *outgoing* packets, though RAKP4 incoming did pass

commit 2b90f8184f94d295063e20deaeff490dbcb6d7ee
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sun May 19 10:06:01 2013 -0400

    More forcefully note the TODOs so people know when they hit them

commit 5248d821b5f01e5a3f83f640d47365a05271cf29
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sun May 19 10:02:20 2013 -0400

    Python ipmi can now actually do commands using 1.5

commit df43c5336be90365ac6707873d86497b15b8adf2
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sat May 18 14:29:43 2013 -0400

    More work to make it get further on session establishment

commit 9269810e7cb7dbe0ed614bc7b6f14d382e7bea06
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Sat May 18 13:37:01 2013 -0400

    Milestone: can now receive and correctly parse get channel auth capabilities result

commit 6b575b84d2db1c58da47ec5ceee50e9c1b6db88c
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri May 17 23:20:24 2013 -0400

    Milestone: now able to craft valid Get channel authentication capabilities request and trigger response

commit b1fd359d4008d3ad864ede30f2442dfa83078753
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri May 17 22:39:00 2013 -0400

    Get a lot closer to a working ipmi python implementation

commit dbe689882ad80e68750812950082d741e097b499
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri May 17 17:28:58 2013 -0400

    Break out constantns to a diff file

commit 507ee81db43e68ef5d93fd61509749e15e71cbe3
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Fri May 17 17:28:31 2013 -0400

    More progress on perl to python port of ipmi

commit 9552eb8e0f9d042119f4ff7d3656043f3f6f0eb1
Author: Jarrod Johnson <jbjohnso@us.ibm.com>
Date:   Thu May 16 15:43:17 2013 -0400

    Kick things off with a little bit of header data