selectel/pyxs — pull request #1 by JKDingwall (2013-04-17 15:42:30+00:00)
Title: Fix for Client.set_permissions() issue

>>> import pyxs
>>> xsc = pyxs.Client(xen_bus_path="/proc/xen/xenbus")
>>> xsc.mkdir("/some/path")
>>> xsc.set_permissions("/some/path", 'r0')

would raise:
Traceback (most recent call last):
File "", line 1, in
File "/root/.local/lib/python2.7/site-packages/pyxs-0.3-py2.7.egg/pyxs/client.py", line 227, in set_permissions
self.ack(Op.SET_PERMS, path, *perms)
File "/root/.local/lib/python2.7/site-packages/pyxs-0.3-py2.7.egg/pyxs/client.py", line 154, in ack
if self.execute_command(*args) != "OK":
File "/root/.local/lib/python2.7/site-packages/pyxs-0.3-py2.7.egg/pyxs/client.py", line 116, in execute_command
if not self.COMMAND_VALIDATORS.get(op, lambda *args: True)(*args):
File "/root/.local/lib/python2.7/site-packages/pyxs-0.3-py2.7.egg/pyxs/client.py", line 68, in
lambda p, *perms: validate_path(p) and validate_perms(perms)),
File "/root/.local/lib/python2.7/site-packages/pyxs-0.3-py2.7.egg/pyxs/helpers.py", line 154, in validate_perms
raise InvalidPermission(perm)
pyxs.exceptions.InvalidPermission: r

With this change:
>>> xsc.set_permissions("/some/path", 'r0', 'w0')

works correctly and verifying the results with xenstore-ls -p shows:
some = "" . . . . . . . . . . . . . . . . . . . . . . . . (n0)
path = "" . . . . . . . . . . . . . . . . . . . . . . . . (r0,w0)