pyxs Changelog

Here you can see the full list of changes between each pyxs release.

Version 0.4.1

Bugfix release, released on May 11th, 2016

  • Fixed a bug in XenBusConnection.create_transport which failed on attribute lookup. See PR #7 on GitHub.

Version 0.4.0

Released on March 6th, 2016

  • Fixed a bug in Client.set_permissions which coerced permission lists (e.g. ["b0"]) to repr-strings prior to validation.

  • The API is now based around bytes, which means that all methods which used to accept str (or text) now require bytes. XenStore paths and values are specified to be 7-bit ASCII, thus it makes little sense to allow any Unicode string as input and then validate if it matches the spec.

  • Removed transaction argument from Client constructor. The user is advised to use the corresponding methods explicitly.

  • Removed connection argument from Client constructor. The user should now wrap it in a Router.

  • Renamed some of the Client methods to more human-readable names:

    Old name New name
    ls list
    rm delete
    get_permissions get_perms
    set_permissions set_perms
    transaction_start transaction
    transaction_end commit and rollback
  • Removed Client.transaction context manager, because it didn’t provide a way to handle possible commit failure.

  • Added Client.exists for one-line path existence checks. See PR #6 on GitHub. Thanks to Sandeep Murthy.

  • Removed implicit reconnection logic from FileDescriptorConnection. The user is now expected to connect manually.

  • Changed XenBusConnection to prefer /dev/xen/xenbus on Linux due to a possible deadlock in XenBus backend.

  • Changed UnixSocketConnection to use socket.socket instead of the corresponding file descriptor.

  • Disallowed calling Client.monitor over XenBusConnection. See for details.

Version 0.3.1

Released on November 29th 2012

  • Added default argument to, which acts similar to dict.get().
  • Fixed a lot of minor quirks so pyxs can be Debianized.

Version 0.3

Released on September 12th 2011

  • Moved all PUBSUB functionality into a separate Monitor class, which uses a separate connection. That way, we’ll never have to worry about mixing incoming XenStore events and command replies.
  • Fixed a couple of nasty bugs in concurrent use of Client.wait() with other commands (see above).

Version 0.2

Released on August 18th 2011

  • Completely refactored validation – no more @spec magic, everything is checked explicitly inside Client.execute_command().
  • Added a compatibility interface, which mimics xen.lowlevel.xs behaviour, using pyxs as a backend, see pyxs/
  • Restricted SET_TARGET, INTRODUCE and RELEASE operations to Dom0 only – /proc/xen/capabilities is used to check domain role.
  • Fixed a bug in Client.wait() – queued watch events weren’t wrapped in pyxs._internal.Event class, unlike the received ones.
  • Added Client.walk() method for walking XenStore tree – similar to os.walk()

Version 0.1

Initial release, released on July 16th 2011

  • Added a complete implementation of XenStore protocol, including transactions and path watching, see pyxs.Client for details.
  • Added generic validation helper – @spec, which forces arguments to match the scheme from the wire protocol specification.
  • Added two connection backends – XenBusConnection for connecting from DomU through a block device and UnixSocketConnection, communicating with XenStore via a Unix domain socket.