Radamand
Radamand

Reputation: 185

suds Python: Permission denied

I have some code that's been untouched since last November, its worked fine this whole time, until now. as far as i know, nothing else has been changed on this host.

The error:

Traceback (most recent call last):
  File "/scm/pvcs/scripts/pyscripts/update_scr_20.py", line 115, in <module>
    updateSCR(SCR, myDeployer, myDeployerID, myEnv, myEnvID, deployTime)
  File "/scm/pvcs/scripts/pyscripts/update_scr_20.py", line 33, in updateSCR
    client = Client(url=SBM_WSDL, location=SBM_ENDPOINT, timeout=180)
  File "build/bdist.linux-x86_64/egg/suds/client.py", line 109, in __init__
  File "build/bdist.linux-x86_64/egg/suds/cache.py", line 145, in __init__
  File "build/bdist.linux-x86_64/egg/suds/cache.py", line 277, in checkversion
  File "build/bdist.linux-x86_64/egg/suds/cache.py", line 251, in clear
OSError: [Errno 13] Permission denied: '/tmp/suds/suds-7962357479995671267-document.px'

I've changed the file permissions to 777, still get the same 'permission denied' error.

Upvotes: 0

Views: 2058

Answers (2)

Brian Withnell
Brian Withnell

Reputation: 31

This is essentially a less than perfect design decision on the part of the python soap client. It by default creates a file in a global space (/tmp/suds) that is owned by a single user, and that locks out other users from using the python soap client. If you chmod /tmp/suds/* to allow the world access it will work (what IBM recommends in their OpenStack product) ... or clean up after the use of the client by deleting the garbage it leaves behind.

The soap client ought to have created the suds directory in the users space (under /home/username) so each user would have their own, or if it really ought be a global resource it should have used open access to the file. By doing neither, it probably has caused a lot of time lost by many a user. I'd call it a bug. Something that costs users time and is easily fixed.

Upvotes: 1

Heisenberg
Heisenberg

Reputation: 1508

This error is raised when suds is run in multiuser environment. Your user (using whom you are running a script) must not have an ownership of that directory. Also try turning the cache off or change the cache directory.

Can you share your part of code which is causing the error.? You should catch the exception and see the full error log.

Upvotes: 1

Related Questions