# This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths unarchive = paths._import_ansible_action_plugin("unarchive") class ActionModule(unarchive.ActionModule): def _find_needle(self, dirname, needle): return paths._safe_find_needle( super(ActionModule, self), dirname, needle) def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) # Note: The unarchive module reuses the copy module to copy the archive # to the remote. Thus we don't need to check the dest here if we run # against localhost. We also have tests that would break if this
# This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from ansible.errors import AnsibleError from zuul.ansible import paths raw = paths._import_ansible_action_plugin("raw") class ActionModule(raw.ActionModule): def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) if paths._is_localhost_task(self): raise AnsibleError("Executing local code is prohibited") return super(ActionModule, self).run(tmp, task_vars)
# This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths synchronize = paths._import_ansible_action_plugin("synchronize") class ActionModule(synchronize.ActionModule): def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) try: delegate_to = self._task.delegate_to except (AttributeError, KeyError): delegate_to = None if delegate_to and not paths._is_localhost_task(self): return super(ActionModule, self).run(tmp, task_vars)
# it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from ansible.errors import AnsibleError from zuul.ansible import paths normal = paths._import_ansible_action_plugin('normal') class ActionModule(normal.ActionModule): '''Override the normal action plugin :py:class:`ansible.plugins.normal.ActionModule` is run for every module that does not have a more specific matching action plugin. Our overridden version of it wraps the execution with checks to block undesired actions on localhost. ''' def run(self, tmp=None, task_vars=None): '''Overridden primary method from the base class.''' if paths._is_localhost_task(self):
# This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths include_vars = paths._import_ansible_action_plugin("include_vars") class ActionModule(include_vars.ActionModule): def _find_needle(self, dirname, needle): return paths._safe_find_needle( super(ActionModule, self), dirname, needle) def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) source_dir = self._task.args.get('dir', None) # This is the handling for source_dir. The source_file is handled by
# # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths include_vars = paths._import_ansible_action_plugin("include_vars") class ActionModule(include_vars.ActionModule): def _find_needle(self, dirname, needle): return paths._safe_find_needle(super(ActionModule, self), dirname, needle) def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) source_dir = self._task.args.get('dir', None) # This is the handling for source_dir. The source_file is handled by # the _find_needle override.
# Copyright 2016 Red Hat, Inc. # # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths win_template = paths._import_ansible_action_plugin("win_template") class ActionModule(win_template.ActionModule): def _find_needle(self, dirname, needle): return paths._safe_find_needle(super(ActionModule, self), dirname, needle) def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) return super(ActionModule, self).run(tmp, task_vars)
# Copyright 2018 BMW Car IT GmbH # # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths command = paths._import_ansible_action_plugin("command") class ActionModule(command.ActionModule): def run(self, tmp=None, task_vars=None): # we need the zuul_log_id on shell and command tasks host = paths._sanitize_filename(task_vars.get('inventory_hostname')) if self._task.action in ('command', 'shell'): self._task.args['zuul_log_id'] = "%s-%s" % (self._task._uuid, host) return super(ActionModule, self).run(tmp, task_vars)
# This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths copy = paths._import_ansible_action_plugin("copy") class ActionModule(copy.ActionModule): def _find_needle(self, dirname, needle): return paths._safe_find_needle( super(ActionModule, self), dirname, needle) def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) if paths._is_localhost_task(self): paths._fail_if_unsafe(self._task.args['dest'])
# # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths win_template = paths._import_ansible_action_plugin("win_template") class ActionModule(win_template.ActionModule): def _find_needle(self, dirname, needle): return paths._safe_find_needle( super(ActionModule, self), dirname, needle) def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) return super(ActionModule, self).run(tmp, task_vars)
# This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths uri = paths._import_ansible_action_plugin("uri") class ActionModule(uri.ActionModule): def _find_needle(self, dirname, needle): return paths._safe_find_needle( super(ActionModule, self), dirname, needle) def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) if paths._is_localhost_task(self): for arg in ('src', 'dest'):
# # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths patch = paths._import_ansible_action_plugin("patch") class ActionModule(patch.ActionModule): def _find_needle(self, dirname, needle): return paths._safe_find_needle( super(ActionModule, self), dirname, needle) def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) if paths._is_localhost_task(self): # The patch module has two possibilities of describing where to # operate, basedir and dest. We need to perform the safe path check
# # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths net_get = paths._import_ansible_action_plugin("net_get") class ActionModule(net_get.ActionModule): def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) if paths._is_localhost_task(self): paths._fail_if_unsafe(self._task.args['dest']) return super(ActionModule, self).run(tmp, task_vars)
# Copyright 2016 Red Hat, Inc. # # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths net_get = paths._import_ansible_action_plugin("net_get") class ActionModule(net_get.ActionModule): def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) if paths._is_localhost_task(self): paths._fail_if_unsafe(self._task.args['dest']) return super(ActionModule, self).run(tmp, task_vars)
# This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths assemble = paths._import_ansible_action_plugin("assemble") class ActionModule(assemble.ActionModule): def _find_needle(self, dirname, needle): return paths._safe_find_needle( super(ActionModule, self), dirname, needle) def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) return super(ActionModule, self).run(tmp, task_vars)
# Copyright 2016 Red Hat, Inc. # # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths network = paths._import_ansible_action_plugin("network") class ActionModule(network.ActionModule): def run(self, tmp=None, task_vars=None): return dict(failed=True, msg='Use of network modules is prohibited')
# This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths aws_s3 = paths._import_ansible_action_plugin("aws_s3") class ActionModule(aws_s3.ActionModule): def _find_needle(self, dirname, needle): return paths._safe_find_needle( super(ActionModule, self), dirname, needle) def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) if paths._is_localhost_task(self): paths._fail_if_unsafe(self._task.args['dest'])
# This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths synchronize = paths._import_ansible_action_plugin("synchronize") class ActionModule(synchronize.ActionModule): def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) try: delegate_to = self._task.delegate_to except (AttributeError, KeyError): delegate_to = None if delegate_to and not paths._is_localhost_task(self): return super(ActionModule, self).run(tmp, task_vars)
# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from ansible.errors import AnsibleError from ansible.module_utils.six.moves.urllib.parse import urlparse from zuul.ansible import paths uri = paths._import_ansible_action_plugin("uri") ALLOWED_URL_SCHEMES = ('https', 'http', 'ftp') class ActionModule(uri.ActionModule): def _find_needle(self, dirname, needle): return paths._safe_find_needle( super(ActionModule, self), dirname, needle) def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action)
# # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths add_host = paths._import_ansible_action_plugin("add_host") class ActionModule(add_host.ActionModule): def run(self, tmp=None, task_vars=None): safe_args = set(( 'ansible_connection', 'ansible_python_interpreter', 'ansible_host', 'ansible_port', 'ansible_user', 'ansible_password', 'ansible_ssh_host', 'ansible_ssh_port', 'ansible_ssh_user', 'ansible_ssh_pass',
# Copyright 2016 Red Hat, Inc. # # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths script = paths._import_ansible_action_plugin("script") class ActionModule(script.ActionModule): def _find_needle(self, dirname, needle): return paths._safe_find_needle(super(ActionModule, self), dirname, needle) def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) return super(ActionModule, self).run(tmp, task_vars)
# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from ansible.module_utils.six.moves.urllib.parse import urlparse from ansible.errors import AnsibleError from zuul.ansible import paths normal = paths._import_ansible_action_plugin('normal') ALLOWED_URL_SCHEMES = ('https', 'http', 'ftp') class ActionModule(normal.ActionModule): '''Override the normal action plugin :py:class:`ansible.plugins.normal.ActionModule` is run for every module that does not have a more specific matching action plugin. Our overridden version of it wraps the execution with checks to block undesired actions on localhost. ''' def run(self, tmp=None, task_vars=None):
# # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths win_copy = paths._import_ansible_action_plugin("win_copy") class ActionModule(win_copy.ActionModule): def _find_needle(self, dirname, needle): return paths._safe_find_needle( super(ActionModule, self), dirname, needle) def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) return super(ActionModule, self).run(tmp, task_vars)
# Copyright 2016 Red Hat, Inc. # # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths fetch = paths._import_ansible_action_plugin("fetch") class ActionModule(fetch.ActionModule): def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) dest = self._task.args.get('dest', None) if dest and not paths._is_safe_path(dest): return paths._fail_dict(dest) return super(ActionModule, self).run(tmp, task_vars)
# # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths add_host = paths._import_ansible_action_plugin("add_host") class ActionModule(add_host.ActionModule): def run(self, tmp=None, task_vars=None): safe_args = set(( 'ansible_connection', 'ansible_python_interpreter', 'ansible_host', 'ansible_port', 'ansible_user', 'ansible_password', 'ansible_ssh_host', 'ansible_ssh_port', 'ansible_ssh_user',
# This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths assemble = paths._import_ansible_action_plugin("assemble") class ActionModule(assemble.ActionModule): def _find_needle(self, dirname, needle): return paths._safe_find_needle( super(ActionModule, self), dirname, needle) def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) if paths._is_localhost_task(self): paths._fail_if_unsafe(self._task.args['dest'])
# it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from zuul.ansible import paths from ansible.errors import AnsibleError command = paths._import_ansible_action_plugin("command") class ActionModule(command.ActionModule): def run(self, tmp=None, task_vars=None): if paths._is_localhost_task(self): raise AnsibleError("Executing local code is prohibited") # we need the zuul_log_id on shell and command tasks host = paths._sanitize_filename(task_vars.get('inventory_hostname')) if self._task.action in ('command', 'shell'): self._task.args['zuul_log_id'] = "%s-%s" % (self._task._uuid, host) return super(ActionModule, self).run(tmp, task_vars)
# Copyright 2019 BMW Group # # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from ansible.errors import AnsibleError from zuul.ansible import paths raw = paths._import_ansible_action_plugin("raw") class ActionModule(raw.ActionModule): def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) if paths._is_localhost_task(self): raise AnsibleError("Executing local code is prohibited") return super(ActionModule, self).run(tmp, task_vars)
# it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this software. If not, see <http://www.gnu.org/licenses/>. from ansible.errors import AnsibleError from zuul.ansible import paths script = paths._import_ansible_action_plugin("script") class ActionModule(script.ActionModule): def _find_needle(self, dirname, needle): return paths._safe_find_needle( super(ActionModule, self), dirname, needle) def run(self, tmp=None, task_vars=None): if not paths._is_official_module(self): return paths._fail_module_dict(self._task.action) if paths._is_localhost_task(self): raise AnsibleError("Executing local code is prohibited")