Fix behaviour when file handles a path with tilde

Two problems here
* unchecked exception handling and erroneous assumption as to why
  an exception might fire
* although the file module expands the path, when using file_args
  the unexpanded path is passed.

Expected result: ~/path/to/file should work fine
Actual result: exception is because it doesn't find file with a message
about not being able to get the selinux context
This commit is contained in:
willthames 2013-01-07 16:30:29 +10:00
parent 4d48daff80
commit 4e50478a05
2 changed files with 6 additions and 3 deletions

View file

@ -254,8 +254,11 @@ class AnsibleModule(object):
return context
try:
ret = selinux.lgetfilecon(path)
except:
self.fail_json(path=path, msg='failed to retrieve selinux context')
except OSError, e:
if e.errno == errno.ENOENT:
self.fail_json(path=path, msg='path %s does not exist' % path)
else:
self.fail_json(path=path, msg='failed to retrieve selinux context')
if ret[0] == -1:
return context
context = ret[1].split(':')

View file

@ -139,7 +139,7 @@ def main():
params = module.params
state = params['state']
path = os.path.expanduser(params['path'])
params['path'] = path = os.path.expanduser(params['path'])
# source is both the source of a symlink or an informational passing of the src for a template module
# or copy module, even if this module never uses it, it is needed to key off some things