mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-26 12:21:26 -07:00
moved 'path exists' function to shell
now it will work with powershell/winrm
This commit is contained in:
parent
81d9066ee1
commit
28d20dbe53
4 changed files with 29 additions and 8 deletions
|
@ -92,6 +92,13 @@ class ActionBase(with_metaclass(ABCMeta, object)):
|
||||||
)
|
)
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
def _remote_file_exists(self, path):
|
||||||
|
cmd = self._connection._shell.exists(path)
|
||||||
|
result = self._low_level_execute_command(cmd=cmd, sudoable=True)
|
||||||
|
if result['rc'] == 0:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def _configure_module(self, module_name, module_args, task_vars=None):
|
def _configure_module(self, module_name, module_args, task_vars=None):
|
||||||
'''
|
'''
|
||||||
Handles the loading and templating of the module code through the
|
Handles the loading and templating of the module code through the
|
||||||
|
|
|
@ -26,12 +26,6 @@ from ansible.plugins.action import ActionBase
|
||||||
class ActionModule(ActionBase):
|
class ActionModule(ActionBase):
|
||||||
TRANSFERS_FILES = True
|
TRANSFERS_FILES = True
|
||||||
|
|
||||||
def _get_remote_raw_stat(self, path):
|
|
||||||
cmd = ['test', '-e', path]
|
|
||||||
result = self._low_level_execute_command(cmd=' '.join(cmd), sudoable=True)
|
|
||||||
if result['rc'] == 0:
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def run(self, tmp=None, task_vars=None):
|
def run(self, tmp=None, task_vars=None):
|
||||||
''' handler for file transfer operations '''
|
''' handler for file transfer operations '''
|
||||||
|
@ -54,7 +48,7 @@ class ActionModule(ActionBase):
|
||||||
# do not run the command if the line contains creates=filename
|
# do not run the command if the line contains creates=filename
|
||||||
# and the filename already exists. This allows idempotence
|
# and the filename already exists. This allows idempotence
|
||||||
# of command executions.
|
# of command executions.
|
||||||
if self._get_remote_raw_stat(creates):
|
if self._remote_file_exists(creates):
|
||||||
return dict(skipped=True, msg=("skipped, since %s exists" % creates))
|
return dict(skipped=True, msg=("skipped, since %s exists" % creates))
|
||||||
|
|
||||||
removes = self._task.args.get('removes')
|
removes = self._task.args.get('removes')
|
||||||
|
@ -62,7 +56,7 @@ class ActionModule(ActionBase):
|
||||||
# do not run the command if the line contains removes=filename
|
# do not run the command if the line contains removes=filename
|
||||||
# and the filename does not exist. This allows idempotence
|
# and the filename does not exist. This allows idempotence
|
||||||
# of command executions.
|
# of command executions.
|
||||||
if self._get_remote_raw_stat(removes):
|
if self._remote_file_exists(removes):
|
||||||
return dict(skipped=True, msg=("skipped, since %s does not exist" % removes))
|
return dict(skipped=True, msg=("skipped, since %s does not exist" % removes))
|
||||||
|
|
||||||
# the script name is the first item in the raw params, so we split it
|
# the script name is the first item in the raw params, so we split it
|
||||||
|
|
|
@ -94,6 +94,10 @@ class ShellBase(object):
|
||||||
cmd += '-r '
|
cmd += '-r '
|
||||||
return cmd + "%s %s" % (path, self._SHELL_REDIRECT_ALLNULL)
|
return cmd + "%s %s" % (path, self._SHELL_REDIRECT_ALLNULL)
|
||||||
|
|
||||||
|
def exists(self, path):
|
||||||
|
cmd = ['test', '-e', pipes.quote(path)]
|
||||||
|
return ' '.join(cmd)
|
||||||
|
|
||||||
def mkdtemp(self, basefile=None, system=False, mode=None):
|
def mkdtemp(self, basefile=None, system=False, mode=None):
|
||||||
if not basefile:
|
if not basefile:
|
||||||
basefile = 'ansible-tmp-%s-%s' % (time.time(), random.randint(0, 2**48))
|
basefile = 'ansible-tmp-%s-%s' % (time.time(), random.randint(0, 2**48))
|
||||||
|
|
|
@ -94,6 +94,22 @@ class ShellModule(object):
|
||||||
script = 'Write-Host "%s"' % self._escape(user_home_path)
|
script = 'Write-Host "%s"' % self._escape(user_home_path)
|
||||||
return self._encode_script(script)
|
return self._encode_script(script)
|
||||||
|
|
||||||
|
def exists(self, path):
|
||||||
|
path = self._escape(self._unquote(path))
|
||||||
|
script = '''
|
||||||
|
If (Test-Path "%s")
|
||||||
|
{
|
||||||
|
$res = 0;
|
||||||
|
}
|
||||||
|
Else
|
||||||
|
{
|
||||||
|
$res = 1;
|
||||||
|
}
|
||||||
|
Write-Host "$res";
|
||||||
|
Exit $res;
|
||||||
|
''' % path
|
||||||
|
return self._encode_script(script)
|
||||||
|
|
||||||
def checksum(self, path, *args, **kwargs):
|
def checksum(self, path, *args, **kwargs):
|
||||||
path = self._escape(self._unquote(path))
|
path = self._escape(self._unquote(path))
|
||||||
script = '''
|
script = '''
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue