added a 'chdir' argument to the command module
the 'chdir' argument changes the current working directory to the fullpath supplied as its value, before the execution of the command.
This commit is contained in:
parent
f5e08158ca
commit
4ad0ff61e5
1 changed files with 13 additions and 0 deletions
|
@ -31,8 +31,12 @@ def main():
|
|||
module = CommandModule(argument_spec=dict())
|
||||
|
||||
shell = module.params['shell']
|
||||
chdir = module.params['chdir']
|
||||
args = module.params['args']
|
||||
|
||||
if chdir:
|
||||
os.chdir(chdir)
|
||||
|
||||
if not shell:
|
||||
args = shlex.split(args)
|
||||
startd = datetime.datetime.now()
|
||||
|
@ -77,6 +81,7 @@ class CommandModule(AnsibleModule):
|
|||
args = base64.b64decode(MODULE_ARGS)
|
||||
items = shlex.split(args)
|
||||
params = {}
|
||||
params['chdir'] = None
|
||||
params['shell'] = False
|
||||
if args.find("#USE_SHELL") != -1:
|
||||
args = args.replace("#USE_SHELL", "")
|
||||
|
@ -99,6 +104,14 @@ class CommandModule(AnsibleModule):
|
|||
rc=0
|
||||
)
|
||||
args = args.replace(x,'')
|
||||
elif x.startswith("chdir="):
|
||||
(k,v) = x.split("=", 1)
|
||||
if not (os.path.exists(v) and os.path.isdir(v)):
|
||||
self.fail_json(msg="cannot change to directory '%s': path does not exist" % v)
|
||||
elif v[0] != '/':
|
||||
self.fail_json(msg="the path for 'chdir' argument must be fully qualified")
|
||||
params['chdir'] = v
|
||||
args = args.replace(x, '')
|
||||
params['args'] = args
|
||||
return (params, args)
|
||||
|
||||
|
|
Loading…
Reference in a new issue